BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP... Tạo các chuỗi sau sử dụng các hàm tín hiệu cơ bản của MATLAB được đề cập trong chương này... Bài 2.1gTạo các chuỗi sau sử dụng các hàm tín
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ ĐIỆN TỬ
TIỂU LUẬN
Bài 2 Giảng viên hướng dẫn : Đào Thị Thu Thủy
Lớp: DHDTVT17BTT
Nhóm sinh viên thực hiện :
1 Đỗ Thành Tài - 21135541
2 Nguyễn Duy Sơn- 21122401
3 Lý Nhân Hậu – 21126811
TP.HCM, ngày 03 tháng 01 năm 2024
Trang 2Nguyễn Duy Sơn
Đỗ Thành tài
Lý Nhân Hậu
Ví dụ 2.7:
Cho hệ thống có phương trình như sau y(n) - y(n - 1) + 0.9y(n - 2) = x(n); n ∀
a Tính đáp ứng xung và vẽ đồ thị h(n) n = −20, , 100
b Tính đáp ứng bậc và vẽ đồ thị s(n) n = −20, , 100
c Hệ thống đặc trưng bởi h(n) có ổn định không?
% -% -XOA MAN HINH,
BIEN -clc
clear all
close all
% -% cau a
b = [1]; a=[1, -1, 0.9];
b = [1]; a = [1, -1, 0.9];
n = [-20:120];
h = impz(b,a,n);
subplot(2,1,1);
stem(n,h);
title('Impulse Response'); xlabel('n'); ylabel('h(n)')
% -% cau b
x = stepseq(0,-20,120); s = filter(b,a,x);
subplot(2,1,2); stem(n,s)
title('Step Response'); xlabel('n'); ylabel('s(n)')
% -% cau c
sum(abs(h))
-1
-0.5
0
0.5
1
Impulse Response
n
0
0.5
1
1.5
2
Step Response
Trang 3clc
clear all
close all
n = -5:15;
x = 3*impseq(-2,-5,15) + 2*impseq(0,-5,15)- impseq(3,-5,15) + 5*impseq(7,-5,15);
subplot(2,2,1); stem(n,x); title('Sequence in Problem 2.1a') stem(n,x); title('Sequence in Problem 2.1a')
xlabel('n'); ylabel('x(n)');
Bài 2.1c
clc
clear all
close all
n = 0:20;
x1 = stepseq(0,0,20);
x2 = -5*stepseq(5,0,20);
x3 = -10*stepseq(10,0,20);
x4 = 5*stepseq(15,0,20);
x3 = x1 + x2 + x3 + x4;
-2 0 2 4 6
Sequence in Problem 2.1a
n
Trang 4-12
-10
-8
-6
-4
-2
0
Trang 5Tạo các chuỗi sau sử dụng các hàm tín hiệu cơ bản của MATLAB được đề cập trong chương này Sử dụng hàm stem đê biểu diễn
x (n)=5 [cos (0.49 πn)+cos( 0.51 πn)], -200 =< n =< 200
Code:
clc
clear all
% Tất cả các giá trị của chuỗi
n = -200:1:200; %Tạo một mảng n chứa các giá trị từ -200 đến 200 với bước nhảy
là 1
x = 5 * (cos(0.49 * pi * n) + cos(0.51 * pi * n)); %Tính toán các giá trị của chuỗi x(n)
% Vẽ đồ thị
%Vẽ đồ thị của chuỗi x(n) bằng hàm stem()
xlabel('n'); %Đặt nhãn cho trục x là n
ylabel('x(n)'); %Đặt nhãn cho trục y là x(n)
-10
-8
-6
-4
-2
0
2
4
6
8
10
n
X 92
Y -9.68583
Trang 6Bài 2.1g
Tạo các chuỗi sau sử dụng các hàm tín hiệu cơ bản của MATLAB được đề cập trong chương này Sử dụng hàm stem để biểu diễn
x (n)=e−0.05 nsin
( 0.1 πn + π 3 ) , 0 =< n =<100
Code:
clc
clear all
n = [0:1:100]; alpha = -0.05;
x = exp(alpha*n).*sin(0.1*pi*n + pi/3);
stem(n,x);
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Trang 7% cau a
x = [-2,-1,0,1,2]; n= -2:22;
xtilde = x' * ones(1,5);
% nhân mảng x với một mảng ones(1,5) chứa 5 số 1 Điền này tạo ra một mảng xtide chứa 5 lần giá trị của một phần tử trong mảng x
xtilde = (xtilde(:))';
% Chuyển đổi mảng xtilde thành một mảng cột
stem(n,xtilde)
% Vẽ đồ thị xtilde bằng hàm stem()
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Bài 2.2c
Tạo các chuỗi tuần hoàn và vẽ đồ thị của chúng (sử dụng hàm stem) dựa theo chu kì tuần hoàn
(n)=sin (0.1 πn ) ¿
Trang 8Code:
a=[1 -0.5 -0.25]; b=[1 2 1];
n=0:100
h = filter(b,a,n); subplot(2,1,1); stem(n,h)
Trang 9500
1000
Bài 2.5b
Trong trường hợp này, đáp ứng xung hội tụ về giá trị bằng 0 khi thời gian tăng dần Điều này có nghĩa là đáp ứng xung này là ổn định.
Cụ thể, tại thời điểm n=1, đáp ứng xung bằng 1.25 Tại thời điểm n=2, đáp ứng xung bằng 0.75 Tại thời điểm n=3, đáp ứng xung bằng 0.5 Và cứ như vậy, đáp ứng xung sẽ tiếp tục giảm xuống
0 khi thời gian tăng dần.
Do đó, đáp ứng xung của hệ thống này là ổn định.
Code:
a=[1 -0.5 0.25];
b=[1 2 1];
n=0:100
h = impz(b,a,n);
stem(n,h);
sum(abs(h))
-0.5
0
0.5
1
1.5
2
2.5
Trang 10Nếu tín hiệu đầu vào của hê thống là x(n) = [5 + 3Cos(0.2πn) +
4Sin(0.6πn)]u(n) , xác định đáp ứng xung y(n) trong khoảng 0≤ n ≤ 200 bằng cách sử dụng hàm filter
Code:
% Định nghĩa của phương trình vi phân
a = [1, -0.5, 0.25];
b = [1, 2, 0, 1];
% Tạo đầu vào x(n) theo định dạng đã cho
n = 0:200;
x = (5 + 3*cos(0.2*pi*n) + 4*sin(0.6*pi*n)).*(n >= 0);
% Tính toán đầu ra y(n) bằng hàm filter
y = filter(b, a, x);
% Vẽ đáp ứng xung của hệ thống
subplot(2,1,2);
stem(n, y);
xlabel('n');
ylabel('y(n)');
Trang 11Ví dụ 2.6: Một bộ vi sai số đơn giản được cho bởi
y(n) = x(n) – x(n-1)
Thực hiện bộ vi sai này cho tín hiệu x(n) sau, vẽ đồ thị, nhận xét từng kết quả
a x(n) = 5 [ u(n) – u(n – 20)]
b x(n) = n [ u(n) – u(n – 10)] + (20 – n)[ u(n – 10) – u(n – 20)]
c x(n) = sin(πn/25) [u(n) – u(n-100)]
Giải a) Code:
n = 0:30;
x = 5 * (heaviside(n) - heaviside(n - 20));% Heaviside là hàm bước
y = x - [0, x(1:end-1)];
subplot(2,1,1);
stem(n, x, 'r', 'LineWidth', 2);%độ rộng của đường vẽ
title('Tín hiệu x(n)');
xlabel('n');
ylabel('x(n)');
grid on;
subplot(2,1,2);
stem(n, y, 'b', 'LineWidth', 2);
title('Bộ vi sai số y(n) = x(n) - x(n-1)');
xlabel('n');
ylabel('y(n)');
grid on; % hiện thị lưới tọa độ
Trang 122
4
6
n
-2
-1
0
1
2
Bộ vi sai số y(n) = x(n) - x(n-1)
n
x(n)
b)
Code:
n = 0:30;
x = n * (heaviside(n) heaviside(n 10)) + (20 n) * (heaviside(n 10) -heaviside(n - 20));
y = x - [0, x(1:end-1)];
subplot(2,1,1);
stem(n, x, 'r', 'LineWidth', 2);
title('Tín hi?u x(n)');
xlabel('n');
ylabel('x(n)');
grid on;
subplot(2,1,2);
stem(n, y, 'b', 'LineWidth', 2);
title('B? vi sai s? y(n) = x(n) - x(n-1)');
xlabel('n');
ylabel('y(n)');
grid on;
Trang 13Code:
n = 0:200;
x = sin((pi * n) / 25) * (heaviside(n) - heaviside(n - 100));
y = x - [0, x(1:end-1)];
subplot(2,1,1);
plot(n, x, 'r', 'LineWidth', 2);
title('Tín hi?u x(n)');
xlabel('n');
ylabel('x(n)');
grid on;
subplot(2,1,2);
stem(n, y, 'b', 'LineWidth', 2);
title('B? vi sai s? y(n) = x(n) - x(n-1)');
xlabel('n');
ylabel('y(n)');
grid on;
legend('x(n)', 'y(n)')
0
5
10
Tín hiệu x(n)
n
-1
-0.5
0
0.5
1
Bộ vi sai số y(n) = x(n) - x(n-1)
n
x(n)
Trang 140 20 40 60 80 100 120 140 160 180 200
n -1
-0.5
0
0.5
1
-0.1
-0.05
0
0.05
0.1
Bộ vi sai số y(n) = x(n) - x(n-1)
x(n)