giúp các bạn sinh viện đại học đà lạt có thêm tài liệu tham khảo về chuyên ngành, chúc các bạn viết báo cáo thật tốt nhé MATLAB là một công cụ tính toán toán học.MATLAB có thể được sử dụng để tính toán, nó cũng cho phép chúng ta vẽ các biểu đồ, đồ thị theo nhiều cách khác nhau, giống như một chương trình phần mền, chúng ta có thể tạo, thực thi và lưu một dãy các lệnh để máy tính có thể chạy tự động. Cuối cùng MATLAB cũng có thể được coi như một ngôn ngữ lập trình, là một môi trường dùng để lập trình hay tính toán. MATLAB được thiết kế để làm việc với những tập dữ liệu đặc biệt chẳng hạn như ma trận, vector, hình ảnh.
Trang 1THỰC HÀNH XỬ LÝ SỐ TÍN HIỆU MATLAB là một công cụ tính toán toán học.MATLAB có thể được sử dụng
để tính toán, nó cũng cho phép chúng ta vẽ các biểu đồ, đồ thị theo nhiều cách khác nhau, giống như một chương trình phần mền, chúng ta có thể tạo, thực thi
và lưu một dãy các lệnh để máy tính có thể chạy tự động Cuối cùng MATLAB
cũng có thể được coi như một ngôn ngữ lập trình, là một môi trường dùng để
lập trình hay tính toán MATLAB được thiết kế để làm việc với những tập dữ
liệu đặc biệt chẳng hạn như ma trận, vector, hình ảnh
BÀI 1:
LÀM QUEN VỚI MATLAB
1 Mở một hàm m-file và thực hiện các yêu cầu sau:
a tạo hai ma trận có chiều dài n*m ,n và m là tùy ý
Trang 32.1 Trong không gian 2D:
Mở một hàm m-file và vẽ đồ thị của các hàm ( vẽ trên cùng 1 cửa sổ )
Trang 4title('do thi y3')
Trang 5Nhận xét : Chương trình nhằm mô phỏng cách sử dụng hàm vẽ đồ thị plot, hàm
tạo nhãn đồ thị title, hàm tạo đường kẻ gird, hàm tạo nhiều cửa sổ con trong cùng một cửa sổ bằng subplot Qua chương trình mô phỏng ta biết được cách thức thực hiện của chương trình cũng như chức năng của từng câu lệnh trong chương trình
Để chỉ định màu và kiểu đường của nét vể ta dùng lệnh plot(x,y,’r ‘)
2.2 Trong không gian 3D:
Trang 8Nhận xét:
- Từ các chương trình trên ta thấy về hình thức các lệnh sử dụng trong hàm 3D giống với 2D, tuy nhiên với việc sử dụng hàm plot3 trong hàm 3D nó sẽ mở rộng thêm cho một trục tọa độ thứ 3 Trong không gian 2D ta có thể chỉ định màu và kiểu đường của nét vẻ thì trong không gian 3D màu sắc của đồ thị được thực hiện bởi lệnh mesh thay cho lệnh plot3
3 Nhận xét chung:
-Với bài thực hành làm quen với phần mềm MATLAB Ta đã thực hiện các phép
tính toán ma trận, các tạo ma trận Cách vẽ trong không gian 2D, 3D, mục đích chính là để làm với các bài toán đơn giản trước sau đó đến các bài toán phức tạp hơn
Trang 9BÀI 2:MÔ PHỎNG VÀ TẠO TÍN HIỆU
Tín hiệu thời gian rời rạc có thể là một dãy mẫu có chiều dài vô hạnhoặc hữu hạn Dãy có chiều dài hữu hạn là dãy có giá trị khác không trongmột khoảng thời gian hữu hạn từ thời điểm N1 đến N2:
Trang 10Trong đó A, 0 và là những số thực được gọi là biên độ, tần số góc và phaban đầu của dãy hàm số sine x[n], còn f0 = 0
Tích hai dãy dữ liệu x[n] và h[n] có cùng chiều dài n sẽ thu được dãy
dữ liệu y[n] có cùng chiều dài N và được thực hiện bằng hệ thức:
y[n] = x[n].h[n] (2.10)
Cộng hai dãy dữ liệu x[n] với h[n] có cùng chiều dài n sẽ thu được
dữ liệu y[n] có cùng chiều dài N và được thực hiện bằng hệ thức:
Trong đó m là một số nguyên dương Đây cũng chính là phép dịch dãy x[n]
về phía phải trục thời gian M mẫu và được ký hiệu là z –M Trường hợp M = 1 thìđược gọi là trễ đơn vị và ký hiệu z – 1 Nếu M lấy dấu âm thì được gọi là sớm,tương đương với việc dịch dãy về phía trái M mẫu trên trục thời gian
2 Thực hành:
2.1 Dãy xung đơn vị n
a Tạo dãy xung đơn vị n có chiều dài N mẫu
x= [1,zeros(1,N-1)];
stem(x)
title('tao day xung don vi co chieu dai N mau')
Trang 11 Chạy trương trình cho ra hình 2.1
-Ta khai báo một dãy xung có N=10 mẫu, sau đó khởi tạo một ma trận 1x10 Phần
tử thứ nhất của ma trận có biên độ bằng 1, các phần tử còn lại bằng 0 Lệnh
title('tao day xung don vi co chieu dai N mau, bi tre M mau (M<N)'
Chạy chương trình cho ra hình 2.2
Trang 121 2 3 4 5 6 7 8 9 10 0
- Hoạt động của chương trình trên:
Đầu tiên ta khai báo số lượng mẫu của dãy xung đơn với N=10 và số
lượng mấu lấy trễ M=4 Tiếp theo ta khởi tạo một ma trận x có 1 hàng
với các phần tử từ 1 đến M có giá trị bằng 0 Phần tử tiếp theo sau đó có giá
trị bằng 1 Các phần tử tiếp theo cho đến phần tử N-M-1 có giá trị bằng 0
title('tao day nhay bac don vi u[n]dai N mau ')
Chạy chương trình cho ra hình 2.3
Trang 131 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 0
- Hoạt động của chương trình trên:
Đầu tiên ta khai báo số lượng mẫu của dãy xung N=6 Sau đó ta khởi tạo ma trận u
có một hàng với các phần tử từ 1 đến N có giá trị bằng 1, các phần tử có N<0 có giá trị bằng 0 Lệnh stem(u) cho phép vẽ đồ thị
- Kết quả thu được từ đồ thị ta thấy rằng khi N nằm trong khoảng từ 1 đến 6 thìu[n]=1
d Tạo dãy nhảy bậc đơn vị u[n] dài N mẫu bị trễ M mẫu(M<N):
N=10;
M=4;
u=[ones(1,N-M)];
stem(u)
title('tao day nhay bac don vi u[n]dai N mau tre M nau (M<N) ')
Chạy chương trình cho ra hình 2.4
Trang 141 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 0
e Chương trình phát xung dãy:
% chuong trinh phat day xung
n=-10:20; %Tao mot vector tu -10 den 20
title('Day xung don vi')
Chạy chương trình cho ra hình 2.5
Trang 15-10 -5 0 5 10 15 20 0
0.5 1 1.5
chi so thoi gian
- Hình thu được cho thấy dãy xung được phát chạy từ -10 đến 20, xung nhịp lên 1 tại vị trí n = 0, các vị trí còn lại có giá trị 0
2.2 Biểu diễn tín hiệu sin phức và sin thực:
% chương trình biểu diễn tín hiệu sin phức (phần thực và phần ảo)
% Tin hieu sin phuc : x[n] = 2exp[-(1/12)+j( / 6)]
Trang 16chi so thoi gian
chi so thoi gian
- Tín hiệu nhận được có dạng sóng sin, có biên độ giảm dần theo thời gian
2.3 Các tín hiệu thời gian rời rạc sin thực:
% Chương trình biểu diễn tín hiệu thời gian rời rạc sin thực
% Tin hiệu x[n] = 1,5 sin(0,2n)
Trang 17axis([0 40 -2 2]);
grid;
title('Day tin hieu sin');
xlabel('Chi so thoi gian n');
chi so thoi gian n
- Đây là tín hiệu hình sin tuần hoàn với chu kì T=10, biên độ cực đại A=1,5
2.4 Các tín hiệu ngẫu nhiên thời gian rời rạc
Tín hiệu ngẫu nhiên thời gian rời rạc có chiều dài n mẫu, phân bố đều đặn trong khoảng [0,1]
% Tín hiệu ngẫu nhiên thời gian rời rạc
Trang 18Chạy chương trình cho ra hình 2.8a1 và 2.8a2
Hình 2.8a2
Nhận xét:
-Tín hiệu nhận được ở hai hình 2.8a1 và 2.8a2 là tín hiệu ngẫu nhiên rời rạc có
chiều dài n mẫu phân bố đều đặn trong khoảng [0,1]
% Tạo tín hiệu ngẫu nhiên dang Gauss
Trang 19 Chạy chương trình cho ra hình 2.8b1 và 2.8b2
Hình 2.8b1
Hình 2.8b2
Nhận xét:
-Tín hiệu nhận được ở hai hình 2.8b1 và 2.8b2 là biễu diễn tín hiệu ngẫu nhiên
dạng gauss có giá trị trung bình bằng không và phương sai bằng đơn vị
3 Mô phỏng:
3.1 Biểu diễm tín hiệu sin thực có tần số 0.9 và 1.1 So sánh các dãy này với dãy trong chương trình 2.3
Trang 20title('Day tin hieu sin tan so 0.9');
xlabel('Chi so thoi gian n');
title('Day tin hieu sin co tan so 1.1');
xlabel('Chi so thoi gian n');
ylabel('Bien do');
Chạy chương trình cho ra hình 2.9a và 2.9b
Hình 2.9a
Trang 21a biểu diễn tín hiệu sin thực có chiều dài 50 mẫu:
%Tin hieu x[n]=2.5 sin(0.2pi*n)
n= 0:50; % Vector thời gian
title('Day tin hieu sin tan so 0.08');
xlabel('Chi so thoi gian n');
ylabel('Bien do');
Trang 22 Chạy chương trình cho ra hình 2.10
Hình 2.10
b Thay lệnh stem bằng lệnh plot và lệnh stairs:
% Thay thế lệnh stem bằng lệnh plot
%Tin hieu x[n]=2.5 sin(0.2pi*n)
title('Day tin hieu sin tan so 0.08');
xlabel('Chi so thoi gian n');
ylabel('Bien do');
Trang 23 Chạy chương trình cho ra hình 2.11
Hình 2.11
% Thay thế lệnh stem bằng lệnh stairs
%Tin hieu x[n]=2.5 sin(0.2pi*n)
title('Day tin hieu sin tan so 0.08');
xlabel('Chi so thoi gian n');
ylabel('Bien do');
Trang 24 Chạy chương trình cho ra hình 2.12
xlabel('tin hieu dang luy thua - dung lenh plot');
% Dung lenh stem
xlabel('tin hieu dang luy thua - dung lenh stem');
% Dung lenh stairs
figuren= 0:50;
x= 0.2.*1.2.^n;
stairs(n,x);
Trang 25axis([0 40 -5 50]);
grid;
xlabel('tin hieu dang luy thua - dung lenh stairs');
Chạy chương trình cho ra hình 2.13
hình 2.13
Chạy chương trình cho ra hình 2.14
hình 2.14
Trang 26 Chạy chương trình cho ra hình 2.15
Hình 2.15
Chạy chương trình cho ra hình 2.16
Hình 2.16
Trang 27 Chạy chương trình cho ra hình 2.17
Hình 2.17
4 Nhận xét chung:
-Qua bài thực hành trên giúp ta biết được cách biểu diễn tín hiệu sin phức vàsin thực, các tín hiệu thời gian rời rạc, và các tín hiệu ngẫu nhiên thời gian rời rạc,các tín hiệu này được quan sát dưới các dạng khác nhau, tính toán và so sánh kếtquả
Trang 28BÀI 3: HỆ THỐNG LTI
1 Tóm tắt lý thuyết
Hệ thống thời gian rời rạc thực hiện phép ánh xạ tín hiệu lối vào với các giátrị x[n] thành tín hiệu rời rạc lối ra với những tính chất mong muốn bằng cách ápdụng những thuật toán cho trước Bài thực hành này là tiến hành mô phỏng một số
hệ thống rời rạc tuyến tính và bất biến với thời gian đơn giản và nghiên cứu cáctính chất của chúng trên lĩnh vực thời gian Các hệ thống này được đặc trưng bởiđáp ứng xung h[n] và được mô hình hóa trên hình 3.1
Và được ký hiệu bằng: y[n] = x[n]*h[n] (3.2)
Hai hệ thống LTI có đáp ứng xung lần lượt là h1[n] và h2[n] ghép nối tiếpvới nhau như hình 3.2, thì hệ thống tổng thể có đáp ứng xung:
h[n] = h1[n]*h2[n] (3.3)
Nếu hai hệ thống ghép nối tiếp nhau sao cho: h1[n]*h2[n] = n (3.4)
thì hệ thống LTI có đáp ứng xung h2[n] được gọi là nghịch đảo của hệ thốngLTI có đáp ứng xung h1[n] và ngược lại
Trang 29 Một hệ thống LTI được gọi là nhân quả khi và chỉ khi đáp ứng xung của nóthỏa mãn điều kiện: h[n] = 0 khi n < 0 (3.6)
Quan hệ vào/ ra của một hệ thống LTI còn được biểu thị bằng phương trìnhsai phân hệ số hằng số dạng:
Giả sử hệ thống là nhân quả, thì phương trình sai phân hệ số hằng số đượcviết lại như sau:
M m
x[n] = ax1[n] + bx2[n]
(3.10)
sẽ có đáp ứng là: y[n] = ay1[n] + by2[n] (3.11)Phương trình (3.11) đúng đối với các hằng số a và b bất kỳ và đối với tất cảcác giá trị khả dĩ của các tín hiệu lối vào x1[n] và x2[n] Nếu phương trình (3.11)không nghiệm đúng đối với ít nhất một giá trị khác không của a hoặc b, hoặc của
x1[n] hoặc của x2[n] thì hệ thống là phi tuyến
Hệ thống được gọi là bất biến đối với thời gian nếu y1[n] là đáp ứng đối vớitín hiệu lối vào x1[n], thì đáp ứng đối với phiên bản trễ của tín hiệu lối vào: x[n] = x1[n – n0] (3.12)
ở đây n0 là số nguyên dương hoặc âm
Nếu hệ thức trên không thỏa mãn thì hệ thống được gọi là thay đổi đối vớithời gian
Trang 30 Trong MATLAB, để mô phỏng các hệ thống thời gian rời rạc LTI nhân quả
có phương trình sai phân (3.7), có thể dùng lệnh filter
y = filter (num,den,x) (3.14)trong đó: x là vector lối vào, num = [b0 b1 … bN]; den = [a0 a1 … aN] là cácvector hệ số của hệ thống; y là vector tín hiệu lối ra, cũng là nghiệm củaphương trình sai phân đối với lối vào x với các điều kiện ban đầu bằng không,
có nghĩa là:
y[-1] = y[-2] = … = y[-N] = 0
Tín hiệu lối ra y[n] của hệ thốngLTI có đáp ứng xung đơn vị h[n] với lối
vào x[n] cũng được xác định bằng lệnh conv(h,x).
Đáp ứng xung đơn vị h[n] của một hệ thống được xác định bằng lệnh
h = impz(num,den,N+1)
2.Thực hành
2.1 Các hệ thống tuyến tính và phi tuyến
%Chuong trinh nghien cuu ve tinh chat tuyen tinh va phi tuyen
Trang 31 Chạy chương trình cho ra hình
Nhận xét:
- Hoạt động chương trình : đầu tiên ta cho 2 phương trình x1 và x2 sau đó ta cộng
chúng lại,num là hệ số mẫu của X, den là hệ số tử của Y rồi được đưa qua hệ
thống H bằng lệnh y=filter() X1 được đưa qua hệ thống H bằng y1 = filter(), x2 được đưa qua hệ thống H bằng y2 = filter(), sau đó yt=y1+y2.Kết thúc ta so sánh 2
dơ đồ để kiểm tra tính tuyến tính và d=y-yt là tính sai số của của 2 tín hiệu lối ra
- Code trên matlab để xét tính tuyến tính giống như quá trình lí ta đã học
- Quan sát tín hiệu trên cho ta thấy yt[n] phụ thuộc vào y[n] Hai tín hiệu trên
không tuyến tính với nhau vì có tín hiệu sai số d >0
2.2 Xác định đáp ứng xung đơn vị của hệ thống LTI:
Trong MATLAB chúng ta sử dụng lệnh h=impz(num,den,N) để tính đáp
ứng xung của hệ thống thời gian rời rạc LTI Chương trình sau cho phép tính và vẽđáp ứng xung của hệ thống có phương trình sai phân sau:
Trang 32 Chạy chương trình cho ra hình
Nhận xét:
- Hoạt động của chương trình :ta lấy N=40 mẫu sau đó lấy hệ số tử và hệ số mẫu của bài toán, tìm đáp ứng xung bằng lệnh h =impz() và vẽ đồ thị bằng lệnh stem()
- Trên cho ta đáp ứng xung của bài toán với biên độ giảm dần khi số mẫu tang lên
2.3 Các hệ thống bất biến với thời gian
%chuong trinh he thong bat bien voi thoi gian
Trang 33title('Tin hieu hieu')
Chạy chương trình cho ra hình
Nhận xét:
- Hoạt động chương trình:ta cho n chạy từ 0 đến 40 mẫu,n0 trễ 10 mẫu, cho
phương trình xn qua hệ thống H tạo thành yn bằng lệnh yn = filter() sau đó lấy trễ
10 mẫu bằng lệnh yn1= [zeros(1,n0) yn] Ta cho xn trễ 10 mẫu trước sau đó đưa qua hệ thống H tạo thành y0 bằng lệnh yn0 = filter(num,den,xn0) Sau đó sẽ tính toán sai số đê kết luận hệ thống có bất biến hay không bằng lệnh dn = yn1 - yn0-Từ kết quả thực hành cho ta thấy tín hiệu lối ra y[n0] bị trễ 10 mẫu so với tín hiệulối ra y[n], sai số giữa hai tin hiệu d=y[n]-y[n0]=0 điều đó cho ta thấy hệ thống này bất biến theo thời gian
Trang 342.4 Ghép nối tiếp các hệ thống LTI
*Tính toán theo lí thuyết:
y1[n]+0,9y1[n-1]+0,8y1[n-2]=0,3x[n]-0,3x[n-1] +0,4x[n-2]
<=> y1[z]+0,9y1[z] +0,8 y1[z]=0,3x[z]-0,3 x[z] +0,4 x[z]
<=> y1[z](1+0,9 +0,8 )= x[z](0,3-0,3 +0,4 )
y[n]+0,7y[n-1]+0,85y[n-2]=0,2y1[n]-0,5y1[n-1] +0,3y1[n-2] qua biến đổi z
<=> y[z]+0,7y[z] +0,85 y[z]=0,2y1[z]-0,5 y1[z] +0,3 y1[z]
Ta có
<=> x[z][(0,3-0,3 +0,4 )( 0,2-0,5 +0,3 )]= y[z][(1+0,9 +0,8 ) (1+0,7 +0,85 )]
<=> x[z][0,06-0,21 +0,12 -0,09 +0,12 ]=y[z][1+1,6 +2,28
+1,325 +0,68 ]
* Thực hành:
% Ghep noi tiep cac he thong LTI
x = [1 zeros(1,40)]; % Tao tin hieu vao x[n]
Trang 35% Ve cac tin hieu
Trang 36title('Dap ung xung don vi');
%In gia tri tuyet doi cua h(k)
td = abs(h(k));
Chạy chương trình cho ra hình
Trang 37Nhận xét:
-Hoạt động chương trình :lấy hệ số tử và mẫu của bài toán, khai báo 250 mẫu và
vẽ đáp ứng xung bằng lệnh h = impz(), tính ổn định của hệ thống này nó sẽ suy giảm tới không bằng vòng lặp for và thoát ra vong lặp bằng break khi không đủ điều kiện abs(h(k))<10^(-6)
- -Từ chương trình trên ta thấy sự ổn định của hệ thống từ mẫu 60 tới 250 có biên
độ gần như bằng 0
3.áp dụng
3.1 các hệ thống phi tuyến và tuyến tính
% ap dung cac he thong tuyen tinh va phi tuyen
Trang 38-Hoạt động chương trình giống với lại mục 2.1
-Ta thu được tín hiệu lối ra của y1[n], y2[n], y[n] Hệ thống trên là hệ thống tuyếntính vì các mẫu tín hiệu có sai số bằng 0
3.2 xác định đáp ứng xung đơn vị của hệ thống LTI Tính ổn định của hệ
thống.
a. y[n] – 0,5y[n - 1] + 0,25y[n - 2] = x[n] + 2x[n-1] + x[n - 3]
Trang 39%Tinh va ve dap ung xung
title('Dap ung xung cua he thong');
Chạy chương trình cho ra hình
b. y[n] = x[n] – 4y[n – 1] + 3x[n – 2] + 1,7y[n – 1] – y[n – 2]
%Tinh va ve dap ung xung
title('Dap ung xung cua he thong');
Chạy chương trình cho ra hình
Trang 40Nhận xét :
- Hoạt động chương trình giống với chương trình ở mục 2.2
- Hai hệ thống trên có tính ổn định vì từ mẫu 0 cho tới 90 của câu b) và từ 10 chođến 100 của câu a) gần như là biên độ của đáp ứng xung không thay đổi, lệnh h =impz(num,den,N) có tác dụng là xác định đáp ứng xung đơn vị của hệ thống
3.3 các hệ thống bất biến với thời gian.
Cho hệ thống LTI có phương trình sai phân:
y[n] – 0,5y[n - 1] + 0,25y[n - 2] = x[n] + 2x[n-1] + x[n - 3]
Viết chương trình vẽ tín hiệu lối ra y[n] và y[n – n0] với n0 = 5, tín hiệu lối vào làx[n] = 3 cos(0,5n+
3
) + 2 sin(0,2n)
%chuong trinh he thong bat bien voi thoi gian
Trang 41title('Tin hieu hieu')
Chạy chương trình cho ra hình
Nhận xét:
Hoạt động chương trình giống với chương trình ở mục 2.3
-Hệ thống trên là bất biến với thời gian vì sai số của các mẫu tín hiệu bằng không
3.4 Ghép nối tiếp các hệ thống LTI
Viết chương trình tính và vẽ các tín hiệu lối ra y1[n] và y2[n] thỏa mãnphương trình sai phân sau:
y1[n] = 0,5x[n] + 0,27x[n – 1] + 0,77x [n – 2]
và y2[n] = 0,45x[n] + 0,5x[n – 1] + 0,45x[n – 2] + 0,53y[n – 1] – 0,46y[n – 2]