1- mở 1 hàm m-file và thực hiện yêu cầu sau:
a- tạo ma trận có chiều dài n x m:
b- cộng trừ nhân chia hai ma trận vừa tạo ( đưa ra kết quả)
c- trích ra đường chéo của 2 ma trận ban đầu sau đó ghép lại thành 1 ma trận mới
d- trích 2 dòng đầu của ma trận 1 và 2 dòng cuối của ma trận 2. sau đó ghép chúng thành ma trận mới
e- trích cột cuối của ma trận thứ nhất và cột đầu của ma trận 2. sau đó ghép với ma trận 1 để tạo ma trận mới
62 trang |
Chia sẻ: vietpd | Lượt xem: 2900 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Bài giảng Làm quen với matlab, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÀI 1: LÀM QUEN VỚI MATLAB
I- Lý thuyết và thực hành
1- mở 1 hàm m-file và thực hiện yêu cầu sau:
a- tạo ma trận có chiều dài n x m:
b- cộng trừ nhân chia hai ma trận vừa tạo( đưa ra kết quả)
c- trích ra đường chéo của 2 ma trận ban đầu sau đó ghép lại thành 1 ma trận mới
d- trích 2 dòng đầu của ma trận 1 và 2 dòng cuối của ma trận 2. sau đó ghép chúng
thành ma trận mới
e- trích cột cuối của ma trận thứ nhất và cột đầu của ma trận 2. sau đó ghép với ma
trận 1 để tạo ma trận mới
% chương trình thực hiện
>> a=[2 4 6 0 ;3 5 7 7;10 4 5 4];
>> b=[2 4 6 1; 4 9 2 4 ;1 5 6 7 ];
>> x=a+b
x =
4 8 12 1
7 14 9 11
11 9 11 11
>> y=a-b
y =
0 0 0 -1
-1 -4 5 3
9 -1 -1 -3
>> z=a.*b
z =
4 16 36 0
12 45 14 28
10 20 30 28
>> t=a./b
t =
1.0000 1.0000 1.0000 0
0.7500 0.5556 3.5000 1.7500
10.0000 0.8000 0.8333 0.5714
>> diag(a); % ham co cong dung trich duong cheo cua ma tran
>> diag(b);
>> x1=[diag(a) diag(b)]
x1 =
2 2
5 9
5 6
>> a1=a(1:2,:);
>> b1=a(2:3,:);
>> x2=[a1;b1]
x2 =
2 4 6 0
3 5 7 7
3 5 7 7
10 4 5 4
>> a2=a(:,4);
>> b2=b(:,1);
>> x3=[a2 b2]
x3 =
0 2
7 4
4 1
2- đồ họa
2.1- trong không gian 2D:
mở 1 hàm m-file và vẽ đồ thị của các hàm sau(vẽ trên cùng 1 của sổ)
hàm f(x) : f(x)= -x.sin(x)
đạo hàm của f(x) : f’(x)=-x.cosx-sinx
đạo hàm xấp xỉ : f12=diff(f(x)/x(2)-x(1))
sai số liên quan: f22=(f12-f’(x)(1:999))/norm(f12)
% chương trình
x=linspace(-20,20,1000); %chon khoang lay mau
%ham f(x);
y=-x.*sin(x);
subplot(2,2,1); % chia o trong do thi
plot(x,y) %ve do thi trong khong gian 2d
grid
title('ham sin'); %tao tieu de cho do thi
xlabel('truc x' ); %tao nhan cho truc x
ylabel('truc y'); %tao nhan cho truc y
%ham dao ham;
y1=-x.*cos(x)-sin(x);
subplot(2,2,2);
plot(x,y1)
grid %ve luoi trong do thi
title('ham dao ham');
xlabel('truc x');
ylabel('truc y');
%ham xap xi
y2=diff(y/x(2)-x(1));
subplot(2,2,3);
plot(x(1:999),y2);
grid
title('ham xap xi');
xlabel('truc x');
ylabel('truc y');
y3=(y2-y1(1:999))/norm(y2);
subplot(2,2,4);
plot(x(1:999),y3);
grid
title('ham sai so lien quan');
xlabel('truc x');
ylabel('truc y');
%ket qua chuong trinh
2.2-trong không gian 3D:
mở 1 hàm m-file và vẽ đồ thị của các hàm sau(vẽ trên từng cửa sổ)
a- z1=f(x,y)=sinx.siny, với x,y=[0, pi ]
b- z2=f(x,y)=x - x3 + y2 + 1, với x,y=[-3,3]
c- z3=f(x,y)=
2 2
2 2
sin( )
( ).
x y
x y x
+
+
, với x,y=[-8,8]
% do thi 1
x=(0:0.05:pi)
y=(0:0.05:pi)
[x,y]=meshgrid(x,y); % tao ma tran he thong trong do thi 3d
z1=sin(x).*sin(y);
figure; %tao them 1 do thi moi
mesh(x,y,z1); %ve do thi 3d
xlabel('Truc x');
ylabel('Truc y');
zlabel('Truc z1');
title(' Do thi ham so Z= sinx*siny');
% do thi 2
[x,y]=meshgrid(-3:0.5:3);
z2=x-x.^3+y.^2+1;
figure;
mesh(x,y,z2);
xlabel('Truc x');
ylabel('Truc y');
zlabel('Truc z2');
title(' Do thi ham so z2 = x-x^3+y^2+1');
% do thi 3
[x,y]=meshgrid(-8:0.5:8);
z3=sin (sqrt(x.^2+y.^2))./sqrt((x.^2+y.^2).*x);
figure;
mesh(x,y,z3);
xlabel('Truc x');
ylabel('Truc y');
zlabel('Trucz3');
title(' Do thi ham so z3 = sin((sqrt(x.^2+y.^2)./sqrt((x.^2+y.^2).*x))');
% ket qua chuong trinh
II- NHẬN XÉT VÀ KẾT LUẬN
Bài thực hành giúp ta bước đầu làm quen với matlab, nhờ đó mà ta co thể dễ dàng tạo
các ma trận các hàm va thưc hiện tinh toán nó, vẽ đượ các đồ thị đơn giản trong
không gian 2d và 3d
Bài thực hành còn giúp ta hiểu rõ chức năng của các lệnh trong matlab
BÀI 2:MÔ PHỎNG VÀ TẠO TÍN HIỆU
1-Tóm tắt lý thuyết
Một tín hiệu thời gian rời rạc được biểu diễn như 1 dãy số hay còn gọi là 1 dãy
mẫu,được kí hiệu là {x[n]}; trong đó đối số là những số nguyên chạy từ -∞ đến
+∞, đặc trưng cho thời gian. Giá trị của dãy mẫu tại thời điểm n là x[n]. vì thế để
tiện lợi,tín hiệu thời gian rời rạc bất kỳ thường được ký hiệu là x[n]
• tín hiệu thời gian rời rạc có thể là 1 dãy mẫu có chiều dài vô hạn hoặc hữu
hạn. dãy có chiều dày hữu hạn là dãy có giá trị khác 0 trong 1 khoảng thời
gian hữu hạn từ thời điểm N1 đến N2: N1≤ n≤ N2. Với N2≥ N1. Dãy này
có chiều dài N=N2-N1+1 mẫu
• dãy thỏa mãn điều kiện [ ] [ ]x n x n kN= +% % được gọi là dãy tuần hoàn với
chu kỳ cơ bản N là 1 số nguyên dương và k là 1 số nguyên bất kỳ
• năng lượng của dảy x[n] dược xác định bằng công thức 2| [ ] |
n
X nε
∞
=−∞
= ∑
• năng lượng của dãy trong 1 khoảng xác định từ -K≤ n≤ K được xác định
bằng biểu thức 2| [ ] |
k
n k
X nε
=−
= ∑
• công suất trung bình của 1 dãy không tuần hoàn x[n] được xác định bằng
công thức 2
1 1lim lim | [ ] |
1 1
K
Kav K K n K
p X n
K K
ε
→∞ →∞
=−
= =
+ +
∑
• Công suất trung bình của 1 dãy tuần hoàn [ ]x n% với chu kỳ N được cho
bởi công thức 2
0
1 | [ ] |
N
av
n
p X n
N
=
= ∑ %
• Dãy xung đơn vị được kí hiệu bằng [ ]nδ và được xác định từ biểu thức:
{ 1, 00, 0[ ] khinkhinnδ =≠=
• Dãy nhảy bậc đơn vị kí hiệu u[n] dược xác dịnh từ biểu thức :
{ 1, 00, 0[ ] khinkhinu n ≥<=
• Dãy sin phức được biểu thị bằng hệ thức : 0[ ] | || | jw nnx n A eα +Φ=
• Dãy sin thực có biên độ là hằng số được biểu thị bằng
[ ] cos( )nx n A w n= + Φ trong đó A , w0, Φ là những số thực được gọi là
biên độ, tần số góc và pha ban đầu của dãy số sin x[n], còn 00 2
wf
pi
= là tần
số. dãy sin phức và sin thực là những dãy tuần hoàn với chu kỳ N nếu :
0 2w n rpi= . Trong đó N là số nguyên dương còn r la số nguyên bất kỳ . giá
trị N nhỏ nhất thỏa mãn điều kiện trên là chu kỳ cơ bản của dãy x[n] đó
• Tích 2 dãy dũ liệu x[n] và h[h] có cùng chiều dài n sẽ thu được 1 dãy dữ
liệu y[n] có cùng chiều dài N là được thực hiện bằng hệ thức :
y[n]= x[n] +h[n]
• Nhân dãy x[n] với hằng số a dược thực hiện bằng hệ thức : y[n]=a.x[n]
• Ngược thời gian hay còn gọi là đổi chiều tín hiệu của 1 dãy có chiều dài
vô hạn dượ thực hiện bằng hệ thức : y[n]= x[-n]
• Làm trễ dãy x[n] có chiều dài vô hạn 1 lượng M sẽ thu được dãy y[n] có
chiều dài vô hạn và được thực hiện nhờ biểu thức: y[n]=x[n-M] . trong đó
M là 1 số nguyên dương . đây cũng chính là 1 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
II- THỰC HÀNH
1- dãy xung đơn vị [ ]nδ
a- tạo dãy xung đơn vị [ ]nδ có chiều dài N mẫu:
b- tạo dãy xung đơn vị [ ]nδ có chiều dài N mẫu bị trễ M mẫu (M<N)
c- tạo dãy nhảy bậc đơn vị u[n] dài N mẫu
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)
e- chương trình phát dãy xung
% chuong trinh
n=10;
%day xung don vi
x=[1 zeros(1,n-1)];
subplot(5,1,1);
stem(x);
title('day xung don vi')
%day xung don vi chieu dai N tre M mau
m=4;
x1=[zeros(1,m) 1 zeros(1,n-m-1)]; %zeros :ma tran dong nhat
khong
subplot(5,1,2);
stem(x1)
title('day xung don vi chieu dai N tre M mau')
%tao day nhay bac dai N mau
u=[ones(1,n)];
subplot(5,1,3);
stem(u)
title('day nhay bac dai N mau')
%tao day nhau bac dai N bi tre M mau
m=4;
u1=[ones(1,n-m)];
subplot(5,1,4);
stem(u1)
title('day nhau bac dai N bi tre M mau')
%chuong trinh phat day xung
n=-10:20;
y=[zeros(1,10) 1 zeros(1,20)];
subplot(5,1,5);
stem(n,y)
xlabel(' chi so thoi gian')
ylabel('bien do')
title('day xung don vi')
axis([10 20 0 1.5]) %tao kich thuoc truc do thi
% ket qua chuong trinh
Nhận xét: nhìn vào đồ thị ta thấy các tín hiệu được biểu diễn dưới dạng rời rạc
nấc đơn vị (biên độ =1),đồ thị thể hiện rõ các đặc điểm của dãy xung đơn vị ,
tính chất trễ , dãy nhảy bậc đơn vị… phù hợp với lý thuyết đã học
2- biểu diễn tín hiệu sin phức và sin thực
dãy sin phức mô tả bằng phương trình:
0 0 0 0( )
0 0| | | | cos( ) | | sin( )
n j w n n nA e A e w n j A e w nσ σ σ+ +Φ = + Φ + + Φ
dãy sin thực [ ] cos( )nx n A w n= + Φ trong đó A , w0, Φ là những số thực được
gọi là biên độ, tần số góc và pha ban đầu của dãy số sin x[n], còn 00 2
wf
pi
= là
tần số
% chuong trinh
t=-(1/12)+(pi/6).*j;
k=2;
n=0:40;
x=k*exp(t*n);
subplot(2,1,1);
stem(n,real(x));
xlabel('chi so thoi gian');
ylabel('bien do')
title('phan thuc')
subplot(2,1,2);
stem(n,imag(x));
xlabel('chi so thoi gian');
ylabel('bien do');
title('phan ao');
% ket qua chuong trinh
Nhận xét : kết quả thu được la đồ thị biểu diễn tín hiệu phần thực và phần ảo
dưới dạng rời rạc nấc đơn vị trên trục thực và trục ảo nhờ hàm stem. Tín hiệu
biểu diễn dần tiến về không
3- các tín hiệu thời gian rời rạc sin thực
để tạo tín hiệu sin thực trong matlab ta sử dụng các hàm sin và cos
%chuong trinh tin hieu thoi gian roi rac sin thuc
n=0:40;
f=0.1;
phase=0;
A=1.5;
arg=2*pi*f*n-phase;
x=A*sin(arg);
stem(n,x);
axis([0 40 -2 2]);
grid;
title(' day tin hieu sin');
xlabel(' chi so thoi gian n');
ylabel(' bien do');
% ket qua chuong trinh
Nhận xét : kết quả thu được cũng là đồ thị dạng rời rạc hình sin có biên độ là
1,5, chu kỳ là 10 biến thiên liên tục theo thời gian
4- các tín hiệu ngẫu nhiên 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] được tạo bởi lệnh trong matlab là x=rand(1,N)
tạo 1 tín hiệu ngẫu nhiên dạng gauss có giá trị trung bình bằng 0 và phương
sai bằng đơn vị , dùng lệnh x=rand(1,N)
%chuong trinh
n=40;
x=randn(1,n);
stem(x);
% ket qua chuong trinh
III- áp dụng
1- biểu diễn tín hiệu sin thực có tần số 0,9 và 1,1
%chuong trinh biểu diễn tín hiệu sin thực có tần số 0,9
n=0:40;
f=0.9;
phase=0;
A=1.5;
arg=2*pi*f*n-phase;
x=A*sin(arg);
stem(n,x);
axis([0 40 -2 2]);
grid;
title(' day tin hieu sin');
xlabel(' chi so thoi gian n');
ylabel(' bien do');
% ket qua chuong trinh
%chuong trinh biểu diễn tín hiệu sin thực có tần số 1,1
n=0:40;
f=1,1;
phase=0;
A=1.5;
arg=2*pi*f*n-phase;
x=A*sin(arg);
stem(n,x);
axis([0 40 -2 2]);
grid;
title(' day tin hieu sin');
xlabel(' chi so thoi gian n');
ylabel(' bien do');
% ket qua chuong trinh
So sánh 2 dãy này với dãy trong chương trình 2.3 (f=0,1) ta nhận thấy : ở tần
số là 0,9 thì chu kỳ sẽ là 9 dạng xung ra được mô phỏng gần như tần số là 0,1
-ở tần số 1,1 ta thấy so với f=0,1 thì đồ thị là dạng đường thẳng do giá trị max
của hàm sin là 1 và ở day giá trị là 1,1 nên đồ thị sẽ có dạng dường thẳng ( dạt
giá trị =0)
2- biểu diễn tín hiệu sin thực có chiều dài 50 mẫu, tấn số 0,08, biên độ 2,5 và
có độ dịch pha 900
-thay lệnh stem thành lệnh plot và lệnh stairs
%chuong trinh
n=0:50;
f=0.08;
phase=90;
A=2.5;
arg=2*pi*f*n-phase;
x=A*sin(arg);
subplot(3,1,1);
stem(n,x);
axis([0 40 -3 3]);
title(' day tin hieu sin bd bang lenh stem');
xlabel(' chi so thoi gian n');
ylabel(' bien do');
subplot(3,1,2);
plot(n,x);
title(' day tin hieu sin bd bang lenh plot');
xlabel(' chi so thoi gian n');
ylabel(' bien do');
subplot(3,1,3);
stairs(n,x);
title(' day tin hieu sin bd bang lenh stairs');
xlabel(' chi so thoi gian n');
ylabel(' bien do');
% ket qua chuong trinh
Nhận xét: đồ thị mà ta thu được sau khi chạy chương trình thể hiện dúng các
thông số của bài toán
Khi ta sủ dụng các lệnh để vẽ đồ thị khác nhau thì sẽ cho ra các dạng đồ thị
khác nhau. Lệnh plot để vẽ đồ thị dưới dạng sóng liên tuc ,lệnh stem để vẽ đồ
thị sóng dạng rời rạc , lệt stairs vẽ đồ thị dạng sóng bậc thang
3- biểu diễn 1 tín hiệu dạng lũy thùa thực x[n]=0,2.1,2n. biểu diễn bằng các
lệnh stem,plot,stairs và nhận xét
n=0:40;
x=0.2.*(1.2.^n);
subplot(3,1,1)
plot(x)
grid
title('tin hieu dang luy thua bd bang lenh plot')
xlabel('chi so thoi gian')
ylabel(' bien do')
subplot(3,1,2)
stem(x);
grid
title('tin hieu dang luy thua bd bang lenh stem')
xlabel('chi so thoi gian')
ylabel(' bien do')
subplot(3,1,3)
stairs(x);
grid
title('tin hieu dang luy thua bd bang lenh stairs')
xlabel('chi so thoi gian')
ylabel(' bien do')
% ket qua chuong trinh
Nhận xét: tín hiệu lũy thừa được biểu diễn bằng 3 lệnh plot, stem và stairs cho
ra 3 dạng sóng khác nhau rời rạc, liên tục, bậc thang. Ta nhận thấyTín hiệu
dược biểu diễn đi từ 0 và bắt đầu tăng dần lên khi gần tới 20 và đạt tới giá trị
đỉnh là >40 phù hợp với lý thuyết đã học
IV- NHẬN XÉT VÀ KẾT LUẬN
Bài thực hành này giúp ta nắm rõ các vấn đề về mô phỏng và tạo tín hiệu: công dụng của
các hàm ở trong từng bài, cách sử dụng các lệnh , cách vẽ đồ thị , hiểu được đồ thị …
BÀI 3:HỆ THỐNG LTI
I- 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 áp
dụ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 1 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ác
tí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
hình 3.1
• Quan hệ vào / ra của hệ thống LTI được xax1 định bởi tổng nhân chập
sau: [ ] [ ] [ ] [ ] [ ]
r k
y n h k x n k x k h n k
∞ ∞
=−∞ =−∞
= − = −∑ ∑ . và được kí hiệu bằng
:y[n]=x[n]*h[n]
• 2 hệ thống LTI có đáp ứng xung lần lượt là h1[n] và h2[n] ghép nối tiếp
với nhau thì hệ thống tổng thể có đáp ứng xung: h[n]=h1[n]*h2[n] . nếu 2
hệ thống ghép nối tiếp nhau sao cho : 1[ ]* 2[ ] [ ]h n h n nδ= thì hệ thống LTI
có đáp ứng xung h2[n] được gọi là nghịch đảo của hệ thống LTI có đáp
ứng xung h1[n] và ngược lại
• 1 hệ thống LTI được gọi là ổn định theo nghĩa BIBO nếu đáp ứng xung
xủa nó thỏa mãn điều kiện: 2| [ ] |
n
h k
∞
=−∞
< ∞∑
• 1 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
• Quan hệ vào ra của hệ thống LTI còn được biểu thị bằng phương trình sai
phân hệ số hằng số dạng:
0 00 0
[ ] [ ] [ ]
M N
m k
m m
b ay n x n m y n k
a a
= =
= − = −∑ ∑ với a0≠0.
như vậy lối ra y[n] tại thời điểm n có thể được tính từ phương trình sai
phân ở trên đối với tất cả n≥n0 khi biết x[n] và các điều kiện ban đầu
y[n0-1], y[n0-2],…,y[n0-N]. hệ thống thời gian rời rạc được mô tả bằng
phương trình sai phân có đáp ứng xung vô hạn nên được gọi là hệ thống
IIR
• Hệ thống có đáp ứng xung hữu hạn được gọi là hệ thống FIR nếu phương
trình sai phân có ak=0 với k>0 . vậy hệ thống FIR nhân quả có phương
trình
0 0
[ ] [ ]
M
m
m
by n x n m
a
=
= −∑
• Hệ thống thời gian rời rạc đượ gọi là tuyến tính nếu đáp ứng lên 1 tổng
bằng tổng các đáp ứng , cách khác nếu y1[n] và y2[n] là đáp ứng lên các
tính hiệu lối vào x1[n] và x2[n] thì đối với lối vào tổng : x[n]=ax1[n]
+bx2[n] sè có đáp ứng là y[n]=ay1[n]+by2[n]. phương trình này đúng với
các hằng số a,b bất kỳ và đối với tất cả cá giá trị khả dĩ của tín hiệu lối vào
x1[n] và x2[n] , nếu phương trình không nghiệm đúng với ít nhất 1 giá trị
khác không của a hoặc b , của x1[n], x2[n] thì hệ thống là phi tuyến
• Hệ thống đượ gọi là bất biến đối với thời gian nếu y1[n] là đáp ứng đối với
tí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] sẽ là y[n]=y1[n-n0], ở đây n0 là số nguyên dương hoặc âm.
Nếu hệ thức không thỏa mãn thì hệ thống thay đổi đối với thời gian. Hệ
thống vừa thỏa mãn tính tuyến tính vừa bất biến với thời gian gọi là hệ
thống LTI
• Trong matlab dể 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 trên ta có thể dùng lệnh filter y=filter(num,den,x)
• Tín hiệu lối ra y[n] của hệ thống LTI 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 1 hệ thống dược xác dịnh bằng lệnh
h=inpz(num,den,N+1)
II- THỰC HÀNH
1- các hệ thống tuyến tính và phi tuyến tính
Nghiên cứu tính chất tuyến tính của hệ thống
y[n]-0,4y[n-1]+0,75y[n-2]=2,2403x[n]+2,4908x[n-1]+2,2403x[n-2]
chương trình dưới đây để mô phỏng hệ thống này với 3 tín hiệu vào là x1[n],x2[n],
x[n]=ax1[n]+bx2[n]. tính và vẽ đồ thị của tín hiệu lối ra y1[n],y2[n] và y[n] với
x1=cos(0,2 npi ),x2=cos(0,8 npi ),x[n]=2x1[n]-3x2[n]
%chuong trinh
n=0:40;
a=2;
b=-3;
x1=cos(2*pi*0.1*n);
x2=cos(2*pi*0.2*n);
x=a*x1+b*x2;
num=[2.2403 2.4908 2.2403]; %tao ma tran tu so
den=[ 1 -0.4 0.75]; % tao ma tran mau so
y1=filter(num,den,x1); % ham filter thuc hien bo loc matran tu, mau cua ham x1
y2=filter(num,den,x2); % thuc hien bo loc matran tu, mau cua ham x2
y=filter(num,den,x);
yt=a*y1+b*y2;
d=y-yt
subplot(3,1,1);stem(n,y);title('tin hieu loi ra theo x')
axis([0 40 -50 50]) %chia truc cua do thi truc x tu 0-40, truc y tu -50-50
subplot(3,1,2);stem(n,yt);title('tin hieu loi ra theo y')
axis([0 40 -50 50])
subplot(3,1,3);stem(n,d);title('tin hieu sai so d')
%ket qua chay chuong trinh
Nhận xét: nhìn vào dồ thị tha thấy tín hiệu lối ra theo x(y[n]), tín hiệu lối ra theo
y(yt[n]) là giống nhau vì thế hai hệ thống này là tuyến tính vì y[n]=yt[n]
2- xác định đáp ứng xung đơn vị của hệ thống LTI
Phép tính và vẽ đáp ứng xung của phương trình sai phân sau:
y[n]-0,4y[n-1]+0,75y[n-2]=2,2403x[n]+2,4908x[n-1]+2,2403x[n-2]
%tinh va ve dap ung xung
n=40;
num=[2.2403 2.4908 2.2403 ];
den=[1 -0.4 0.75];
h=impz(num,den,n); %hàm impz : xac dinh dap ung xung don vi cua he thong
stem(h);
title('dap ung xung cua he thong');
Nhận xét: kết quả thu được là dang tín hiệu được biểu diễn dưới dạng rời rạc và tiến dần
về 0
3- các hệ thống bất biến với thời gian
Mô phỏng hệ thống có phương trình sai phân sau
y[n]= 2,2403x[n]+2,4908x[n-1]+2,2403x[n-2]+ 0,4y[n-1]+0,75y[n-2]
mục đích của chương trình này là tìm tín hiệu lối ra y[n] đối với 2 tín hiệu lối vào
x[n] và x[n-n0] và hiệu của 2 tín hiệu đó
n=0:40;
n0=10;
a=0.3;
b=-2;
xn=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n);
xn0=[zeros(1,n0) xn];
num=[2.243 2.4908 2.2403];
den=[1 -0.4 0.7];
yn=filter(num,den,xn);
yn0=filter(num,den,xn0);
dn=yn-yn0(1+n0:41+n0);
subplot(3,1,1)
stem(n,yn);
title('tin hieu loi ra trheo y[n]');
subplot(3,1,2);
stem(n,yn0(1:41));
title('tin hieu loi ra tre n0 mau');
subplot(3,1,3);
stem(n,dn);
title('tin hieu hieu')
Nhận xét: tín hiệu lối ra y[n] giảm dần, tín hiệu lối ra theo y[n-n0] bị trễ đi 10 mẫu so
với tín hiệu y[n] . hai tín hiệu này cơ bản là giống nhau nhưng thời điểm bắt đầu của
tín hiệu là khác nhau
Vì tín hiệu ra là 0 nên không đáp ứng với tín hiệu lối vào nên hệ thống không bất biến
với thời gian
4- ghép nối tiếp các hệ thống
Ghép nối 2 hệ thống bậc 2 có phương trình sai phân sau:
y1[n]+0,9y1[n-1]+0,8y1[n-2]=0,3x[n]-0,3x[n-1]+0,4x[n-2]
và
y2[n]+0,7y2[n-1]+0,85y2[n-2]=0,2y1[n]-0,5y1[n-1]+0,3y1[n-2]
để thu được hệ thống bậc 4 có phương trình sai phân sau
y[n]+1,6y[n-1]+2,28y[n-2]+1,325y[n-3]+0,68y[n-4]=0,06x[n]-0,19x[n-
1]+0,27x[n-2]-0,26x[n-3]+0,12x[n-4]
%chuong trinh
x=[1 zeros(1,40)];
%tao tin hieu vao x[n]
n=0:40;
%cac he so cua he thong bac 4
den=[1 1.6 2.28 1.325 0.68];
num=[0.06 -0.19 0.27 -0.26 0.12];
%tinh tin hieu loi ra cua he thong bac 4
y=filter(num,den,x);
%cac he so cua hai he thong bac hai
num1= [0.3 -0.2 0.4];
den1=[1 0.9 0.8];
num2=[0.2 -0.5 0.3];
den2=[1 0.7 0.85];
%tin hieu ra y[n]
y1=filter(num1,den1,x);
%tin hieu ra y[2]
y2=filter(num2,den2,y1);
%hieud[n]=y[n]-y2[n]
d=y-y2;
%ve cac tin hieu
subplot(3,1,1);
stem(n,y);
ylabel('bien do')
title('tin hieu ra cua he thong bac 4');
grid;
subplot(3,1,2);
stem(n,y2);
ylabel('bien do')
title('loi ra cua he thong noi tiep');
grid;
subplot(3,1,3);
stem(n,d);
xlabel('chi so thoi gian n');
ylabel('bien do');
title('tin hieu sai so');
grid;
Nhận xét:dựa vào đồ thị ta nhận thấy tín hiệu lối ra y[n] giống tín hiệu lối ra y2[n]
nên dãy y[n] giống dãy y2[n]
5- tính ổn dịnh của hệ thống LTI
y[n]-x[n]-0,8x[n-1]-1,5y[n-1]-0,9y[n-2]
%chuong trinh
num=[1 -0.8];
den=[1 1.5 0.9];
N=250;
h=impz(num,den,N+1);
sum=0; %thuc hien phep lap
for k=1:N+1;
sum=sum + abs(h(k));
if abs(h(k))<10^(-6)
break
end
end
%ve dap ung xung don vi
n=0:N;
stem(n,h);
xlabel('chi so thoi