You are on page 1of 6

Bài 1

% Vẽ biểu đồ cho từng khoảng thời gian


figure;

% Khoảng thời gian [0 → 2t]


subplot(3, 1, 1);
plot(t(t <= 2*T), signal(t <= 2*T));
xlabel('Thời gian (s)');
ylabel('Biên độ');
title('0 → 2t');
grid on;

% Khoảng thời gian [2t → 6t]


subplot(3, 1, 2);
plot(t(t > 2*T & t <= 6*T), signal(t > 2*T & t <= 6*T));
xlabel('Thời gian (s)');
ylabel('Biên độ');
title('2t → 6t');
grid on;

% Khoảng thời gian [6t → 10t]


subplot(3, 1, 3);
plot(t(t > 6*T & t <= 10*T), signal(t > 6*T & t <= 10*T));
xlabel('Thời gian (s)');
ylabel('Biên độ');
title('6t → 10t');
grid on;

% Tinh chỉnh layout


sgtitle('Tín hiệu thỏa mãn yêu cầu');

Bài 2
% Định nghĩa tín hiệu
t = linspace(0, 2, 1000);
x = 10*sin(50*pi*t).*cos(20*pi*t);

% Xác định tần số lớn nhất của tín hiệu


f_max = max([50, 20]); % Tần số lớn nhất giữa hai thành phần

% Tần số lấy mẫu


fs_1 = 3 * f_max; % (i) Lớn hơn 3 lần f_max
fs_2 = 2 * f_max; % (ii) Nhỏ hơn 2 lần f_max

% Lấy mẫu tín hiệu


t_sampled_1 = 0:1/fs_1:2; % Lấy mẫu với tần số lớn hơn 3 lần f_max
t_sampled_2 = 0:1/fs_2:2; % Lấy mẫu với tần số nhỏ hơn 2 lần f_max
x_sampled_1 = 10*sin(50*pi*t_sampled_1).*cos(20*pi*t_sampled_1);
x_sampled_2 = 10*sin(50*pi*t_sampled_2).*cos(20*pi*t_sampled_2);

% Vẽ tín hiệu trong miền thời gian và phổ tần số của tín hiệu lấy mẫu
figure;

% Tín hiệu gốc


subplot(3, 2, 1);
plot(t, x);
xlabel('Thời gian (s)');
ylabel('Biên độ');
title('Tín hiệu gốc');
grid on;

% Phổ tần số của tín hiệu gốc


subplot(3, 2, 2);
f = linspace(-fs_1/2, fs_1/2, length(x));
X = fftshift(abs(fft(x)));
plot(f, X);
xlabel('Tần số (Hz)');
ylabel('Biên độ');
title('Phổ tần số của tín hiệu gốc');
grid on;

% Tín hiệu lấy mẫu với fs_1


subplot(3, 2, 3);
stem(t_sampled_1, x_sampled_1);
xlabel('Thời gian (s)');
ylabel('Biên độ');
title(['Tín hiệu lấy mẫu với f_s > 3*f_{max} (f_s = ' num2str(fs_1) 'Hz)']);
grid on;

% Phổ tần số của tín hiệu lấy mẫu với fs_1


subplot(3, 2, 4);
f_sampled_1 = linspace(-fs_1/2, fs_1/2, length(x_sampled_1));
X_sampled_1 = fftshift(abs(fft(x_sampled_1)));
plot(f_sampled_1, X_sampled_1);
xlabel('Tần số (Hz)');
ylabel('Biên độ');
title(['Phổ tần số của tín hiệu lấy mẫu với f_s > 3*f_{max}']);
grid on;

% Tín hiệu lấy mẫu với fs_2


subplot(3, 2, 5);
stem(t_sampled_2, x_sampled_2);
xlabel('Thời gian (s)');
ylabel('Biên độ');
title(['Tín hiệu lấy mẫu với f_s < 2*f_{max} (f_s = ' num2str(fs_2) 'Hz)']);
grid on;

% Phổ tần số của tín hiệu lấy mẫu với fs_2


subplot(3, 2, 6);
f_sampled_2 = linspace(-fs_2/2, fs_2/2, length(x_sampled_2));
X_sampled_2 = fftshift(abs(fft(x_sampled_2)));
plot(f_sampled_2, X_sampled_2);
xlabel('Tần số (Hz)');
ylabel('Biên độ');
title(['Phổ tần số của tín hiệu lấy mẫu với f_s < 2*f_{max}']);
grid on;

% Tinh chỉnh layout


sgtitle('Tín hiệu và phổ tần số của tín hiệu lấy mẫu');

Bài 3
% Định nghĩa tín hiệu đầu vào và đáp ứng xung của hệ thống
n = -10:100;
x_n = (1/10).^n .* (n >= 0); % tín hiệu đầu vào
h_n = (1/5).^n .* (n >= 0); % đáp ứng xung của hệ thống
% Tính toán đáp ứng đầu ra của hệ thống bằng tích chập
y_n = conv(x_n, h_n, 'same');

% Vẽ đáp ứng đầu ra của hệ thống


figure;
stem(n, y_n);
xlabel('n');
ylabel('y(n)');
title('Đáp ứng đầu ra của hệ thống');
grid on;

Kết luận :
Dựa trên kết quả của việc lấy mẫu tín hiệu và phân tích phổ tần số, chúng ta có
thể rút ra một số kết luận về hệ thống:

1. **Tần số lớn nhất của tín hiệu**: Tần số lớn nhất của tín hiệu là f_max = 50Hz,
được xác định bởi thành phần có tần số cao nhất trong tín hiệu sin(50*pi*t).

2. **Lấy mẫu tín hiệu**:


- Khi lấy mẫu với tần số lớn hơn 3 lần f_max ( f_s = 150 Hz), chúng ta có thể
tái tạo lại tín hiệu gốc một cách chính xác, như được thể hiện qua việc phổ tần số
của tín hiệu lấy mẫu không có bất kỳ mất mát thông tin nào so với tín hiệu gốc.
- Khi lấy mẫu với tần số nhỏ hơn 2 lần f_{max} ( f_s = 100 Hz), tín hiệu lấy
mẫu không thể tái tạo chính xác tín hiệu gốc. Điều này dẫn đến mất mát thông tin
và biến đổi hình dạng của tín hiệu trong miền thời gian và phổ tần số.

3. **Giản đồ điểm cực điểm không**: Trong phổ tần số của tín hiệu lấy mẫu, ta có
thể quan sát các điểm cực điểm không, nơi phổ tần số chuyển từ 0 đến giá trị không
khác nhau. Điều này xảy ra khi tần số lấy mẫu không đáp ứng điều kiện Nyquist và
dẫn đến hiện tượng Aliasing.

Tổng cộng, hệ thống này là một hệ thống tín hiệu có tần số cao và việc lấy mẫu tín
hiệu đòi hỏi tần số lấy mẫu đủ cao để không gây ra hiện tượng Aliasing và đảm bảo
duy trì thông tin của tín hiệu gốc.
Câu 4
% Định nghĩa phương trình sai phân
a = [1, -0.3, 0.2, 0, 0, 0, -0.3];
b = [1, 3, 1, 0, -5, 0, 0];

% Tính đáp ứng xung của hệ thống


n = -100:100;
x = zeros(size(n)); % tín hiệu đầu vào, giả sử là không có tín hiệu đầu vào
y = zeros(size(n)); % tín hiệu đầu ra, khởi tạo tất cả các giá trị bằng 0

for i = 7:length(n)
y(i) = b * [x(i); x(i-1); x(i-2); x(i-3); x(i-4); x(i-5); x(i-6)] - a(2) *
y(i-1) - a(7) * y(i-6);
end

% Vẽ đáp ứng xung của hệ thống


figure;
subplot(2, 1, 1);
stem(n, y);
xlabel('n');
ylabel('y(n)');
title('Đáp ứng xung của hệ thống');
grid on;
% Tìm và vẽ giản đồ điểm cực điểm không của hệ thống
zero_crossings = find(diff(sign(y)) ~= 0);
subplot(2, 1, 2);
stem(n(zero_crossings), y(zero_crossings), 'r', 'Marker', 'o');
xlabel('n');
ylabel('y(n)');
title('Giản đồ điểm cực điểm không của hệ thống');
grid on;
1.Kết luận
a.Đáp ứng xung của hệ thống:
 Đáp ứng xung của hệ thống có dạng rất phức tạp, không phải là một hình dạng
đơn giản như hình sin hoặc cosin. Điều này cho thấy hệ thống có tính chất
không tuyến tính và có thể phức tạp hơn nếu so sánh với hệ thống tuyến
tính.
 Có thể quan sát thấy rằng đáp ứng xung có sự dao động và hội tụ về giá trị
ổn định sau một thời gian. Điều này thường xuyên xuất hiện trong các hệ
thống có tính chất phản hồi.
b.Giản đồ điểm cực điểm không của hệ thống:
 Giản đồ điểm cực điểm không của hệ thống cho thấy sự biến đổi giữa các giá
trị của đáp ứng xung. Các điểm cực điểm không là những điểm quan trọng,
chúng cho biết sự thay đổi trong hệ thống và có thể cung cấp thông tin về
ổn định và không ổn định của hệ thống.
2.

Để xác định đáp ứng đầu ra của hệ thống khi biết tín hiệu vào x(n), ta cần thực
hiện phép tích chập giữa tín hiệu vào và hàm phản hồi của hệ thống. Dưới đây là
phương trình phép tích chập:

y(n)=x(n)∗h(n)

Trong đó:

 x(n) là tín hiệu vào đã cho: 5cos(0.2πn)sin(0.4πn)


 h(n) là hàm phản hồi của hệ thống, được xác định bởi các hệ số trong phương trình
sai phân của hệ thống.

Code matlab

% Định nghĩa tín hiệu vào


n = -10:100;
x_n = 5 * cos(0.2*pi*n) .* sin(0.4*pi*n);

% Định nghĩa hàm phản hồi của hệ thống


h_n = @(n, y) (1/5)*y(n-1) - (1/5)*y(n-6) + x_n + 3*x_n(n-1) + x_n(n-2) - 5*x_n(n-
4);

% Tính đáp ứng đầu ra của hệ thống


y_n = zeros(size(n));
for i = 7:length(n)
y_n(i) = h_n(i, @(n) y_n(n));
end

% Vẽ đáp ứng đầu ra của hệ thống


figure;
stem(n, y_n);
xlabel('n');
ylabel('y(n)');
title('Đáp ứng đầu ra của hệ thống');
grid on;

Câu 5
% Định nghĩa tín hiệu liên tục
t = linspace(0, 10, 5000); % Thời gian từ 0 đến 10 giây với 5000 điểm mẫu
x_t = cos(30*pi*t) + 0.4*sin(50*pi*t);

% Subplot 1: Vẽ tín hiệu rời rạc x(n) sau khi thực hiện lấy mẫu với tần số lấy mẫu
Fs = 500 Hz trong thời gian 10 giây
Fs = 500; % Tần số lấy mẫu
n = 0:1/Fs:10; % Vector thời gian rời rạc
x_n = cos(30*pi*n) + 0.4*sin(50*pi*n);

% Subplot 2: Vẽ phổ biên độ tần số của tín hiệu sau khi lấy mẫu
X_n = abs(fft(x_n)); % Biến đổi Fourier của tín hiệu rời rạc
frequencies = linspace(0, Fs, length(X_n)); % Tạo vector tần số tương ứng

% Subplot 3: Hệ thống có phương trình sai phân y(n) - 0.3y(n-1) = x(n), vẽ đáp ứng
xung của hệ thống
a = [1, -0.3]; % Hệ số của đầu ra y(n)
b = 1; % Hệ số của đầu vào x(n)
y_n = filter(b, a, x_n);

% Subplot 4: Vẽ đáp ứng tần số biên độ của hệ thống


[H, f] = freqz(b, a, frequencies, Fs);

% Subplot 5: Vẽ đáp ứng đầu ra của hệ thống với đầu vào là x(n)
y_t = filter(b, a, x_t);

% Subplot 6: Vẽ phổ biên độ của đáp ứng đầu ra của hệ thống với đầu vào là x(n)
Y_t = abs(fft(y_t));
frequencies_y = linspace(0, Fs, length(Y_t));

% Vẽ đồ thị
figure;

% Subplot 1
subplot(2, 3, 1);
stem(n, x_n);
xlabel('n');
ylabel('x(n)');
title('Tín hiệu rời rạc x(n)');

% Subplot 2
subplot(2, 3, 2);
plot(frequencies, X_n);
xlabel('Tần số (Hz)');
ylabel('Biên độ');
title('Phổ biên độ của tín hiệu');

% Subplot 3
subplot(2, 3, 3);
stem(n, y_n);
xlabel('n');
ylabel('y(n)');
title('Đáp ứng xung của hệ thống');
% Subplot 4
subplot(2, 3, 4);
plot(f, abs(H));
xlabel('Tần số (Hz)');
ylabel('Biên độ');
title('Đáp ứng tần số biên độ của hệ thống');

% Subplot 5
subplot(2, 3, 5);
plot(t, y_t);
xlabel('Thời gian (s)');
ylabel('Đầu ra y(t)');
title('Đáp ứng đầu ra của hệ thống với đầu vào x(t)');

% Subplot 6
subplot(2, 3, 6);
plot(frequencies_y, Y_t);
xlabel('Tần số (Hz)');
ylabel('Biên độ');
title('Phổ biên độ của đầu ra y(t)');

% Cài đặt tự động cỡ cho các đồ thị


set(gcf, 'Position', get(0, 'Screensize'));

Bài 6
0.5y(n) = y(n-1) + 5y(n-2) + 3y(n-3) +2y(n-4) +x(n) + 2.5x(n-1) -2x(n-2) +1.5x(n-
3)
−1 −2 −4 −5
0.5−z −5 z −3 z −2 z
H(z) = −1 −2 −3
1+ 2.5 z −2 z +1.5 z ¿
¿

You might also like