Tài liệu Bài giảng Làm quen với matlab: 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(...
62 trang |
Chia sẻ: hunglv | Lượt xem: 1818 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Làm quen với matlab, để tải tài liệu gốc về máy 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 gian n');
ylabel('bien do');
title('dap ung xung don vi');
%In gia tri tuyet doi cua h(k)
td=abs(h(k))
grid
Nhận xét: dựa vào đồ thị ta nhận thấy hệ thống là ổn định vì nó tiến dần về 0
III- ÁP DỤNG
1-các hệ thống tuyến tính và phi tuyến tính
y[n]-0,5y[n-1]+0,25y[n-2]=x[n]+2x[n-1]+x[n-3]
với x1[n]=cos(0,5 npi +
3
pi
)
x2[n]=sin(0,2 npi )
x[n]=3x1[n]+2x2[n]
tính và vẽ tín hiệu lối ra y1[n],y2[n],y[n]. xét xem hệ thống có tuyến tính hay không? Vì
sao?
%chuong trinh nghien cuu ve tinh chat tuyen tinh va khong tuyen tinh
n=0:40;
a=3;
b=2;
x1=cos(0.5*pi*n+pi/3);
x2=sin(0.2*pi*n);
x=a*x1+b*x2;
num=[1 2 1];
den=[1 -0.5 0.25];
y1=filter(num,den,x1);
y2=filter(num,den,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])
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')
Vì tín hiệu lối ra theo x giống tín hiệu lối ra theo y nên hệ thống là tuyến tính
2- xác định đáp ứng xung đơn vị của hệ thống LTI. Tính ổn dịnh của hệ thống
Cho hệ thống LTI có phương trình sai phân
a- y[n]-0,5y[n-1]+0,25y[n-2]=x[n]+2x[n-1]+x[n-3]
%chuong trinh
num=[1 2 0 1];
den=[1 -0.5 0.25 0];
N=100;
h=impz(num,den,N+1);
sum=0;
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 gian n');
ylabel('bien do');
title('dap ung xung don vi');
%In gia tri tuyet doi cua h(k)
td=abs(h(k))
%ket qua chay chuong trinh
b-y[n]=x[n]-4x[n-1]+3x[n-2]+1,7y[n-1]-y[n-2]
%chuong trinh
num=[1 4 3];
den=[1 -1.7 1];
N=100;
h=impz(num,den,N+1);
sum=0;
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 gian n');
ylabel('bien do');
title('dap ung xung don vi');
%In gia tri tuyet doi cua h(k)
td=abs(h(k))
Nhận xét: dựa vào đồ thị ta thấy hệ thống không ổn định vì nó biến thiên liên tuc theo
dạng sóng sin
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]=3cos(0,5 npi +
3
pi
)+2sin(0,2 npi ). Hệ thống có bất biến với thời gian không?
%he thong dap ung xung bat bien theo thoi gian
n=0:40;
n0=5;
a=3;
b=2;
xn=a*cos(0.5*pi*n+pi/3)+b*sin(0.2*pi*n);
xn0=[zeros(1,n0) xn];
num=[1 2 0 1];
den=[1 -0.5 0.25 0];
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 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 : dựa vào đồ thị ta nhận thấy 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 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ãn phươ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]
với tín hiệ lối vào x[n=cos(20 npi /256)+cos(200 npi /256) với 0≤n≤29
%chuong trinh
x= cos(20*pi*n/256)+cos(200*pi*n/256)
%tao tin hieu vao x[n]
n=0:29;
%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.5 0.27 0.77];
den1=[1 0 0 0];
num2=[0.45 0.5 0.45];
den2=[1 0.53 -0.46];
%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;
% kết quả
IV- NHẬN XÉT VÀ KẾT LUẬN
Bài thực hành giúp ta 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ó con giúp ta hiểu dược các tính chất của hệ thống, các thuật toán và các hàm
trong từng bài toán, các hướng dể giải quyết bài toán đó
Tín hiệu ra phản ánh rõ tính chất và vấn đề của bài toán phù hợp với lý thuyết đã học
BÀI 4:PHỔ TẦN SỐ CỦA TÍN HIỆU-BIẾN ĐỔI FORIER THỜI GIAN RỜI RẠC
I-LÝ THUYẾT
1-Biến đổi forier thời gian rời rạc
2- Biến đổi forier thời gian rời rạc nghịch đảo (IDTFT)
3-các tính chất của DTFT
• Tính chất dịch thời gian
• Dịch về tần số
• Tính chất nhân chập
• Tính chất điều chế
• Tính chất ngược thời gian
II-THỰC HÀNH
1- tính toán DTFT
2- tính DTFT X(e-jw) của dãy x[n] dạng
X(e-jw) =
2
1 0,6
jw
jw
e
e
−
−
+
+
%chuong trinh
%Tinh DTFT
%Tinh cac mau tan so cua DTFT
w=-4*pi:8*pi/511:4*pi;
num=[2 1];
den=[1 -0.6];
h=freqz(num,den,w);
% do thi cua DTFT
figure
subplot(2,1,1)
plot(w/pi,real(h));
grid;
title('phan thuc bien doi DTFT cua x[n]');
xlabel('omega/pi');
ylabel('bien do');
subplot(2,1,2)
plot(w/pi,imag(h));
grid;
title('phan ao bien doi DTFT cua x[n]');
xlabel('omega/pi');
ylabel('bien do');
figure
subplot(2,1,1)
plot(w/pi,abs(h));
grid;
title('pho bien do cua tin hieu x[n]');
xlabel('omega/pi)');
ylabel('bien do');
subplot(2,1,2)
plot(w/pi,angle(h));
grid;
title('pho pha cua tin hieu x[n]');
xlabel('omega/pi');
ylabel('pha do bang radians')
grid
Nhận xét: bài toán này hiển thị DTFT của dãy X(e-jw) dựa vào hàm freqz và vẽ đồ thị
của nó
Hàm abs lấy biên độ
Hàm angle lấy pha
3- tính chất của DTFT
a-tính chất dịch chuyển thời gian
%chuong trinh
w=-pi:2*pi/225:pi;
wo=0.4*pi;
D=10;
x=[1 2 3 4 5 6 7 8 9];
h1=freqz(x,1,w);
h2=freqz([zeros(1,D) x],1,w);
subplot(2,2,1)
plot(w/pi,abs(h1));
grid;
title('pho bien do day goc')
xlabel('omega/pi');
ylabel('bien do');
subplot(2,2,2)
plot(w/pi,abs(h2));
grid
title('pho bien do cua day bi dich')
xlabel('omega/pi');
ylabel('bien do');
subplot(2,2,3)
plot(w/pi,angle(h1));
grid
title('pho pha cua day goc')
xlabel('omega/pi');
ylabel('bien do');
subplot(2,2,4)
plot(w/pi,angle(h2));
grid
title('pho pha cua day bi dich')
xlabel('omega/pi');
ylabel('bien do');
Thông số đặc trưng cho sự dịch chuyển thời gian là h1 ,h2( xác định đáp ứng tần số
của hệ thống)
b-tính chất dịch chuyển về tần số
%chuong trinh
w=-pi:2*pi/225:pi;
wo=0.4*pi;
x1=[1 3 5 7 9 11 13 15 17];
L=length(x1);
h1=freqz(x1,1,w)
n=0:L-1;
x2=exp(wo*i*n).*x1;
h2=freqz(x2,1,w);
subplot(2,2,1)
plot(w/pi,abs(h2));
grid;
title('pho bien do cua day goc')
xlabel('omega/pi');
ylabel('biên do');
subplot(2,2,2)
plot(w/pi,abs(h2));
grid;
title('pho bien do cua day bi dich tan so')
xlabel('omega/pi');
ylabel('biên do');
subplot(2,2,3);
plot(w/pi,angle(h1));
title('pho pha cua day goc');
xlabel('omega/pi');
ylabel('biên do');
subplot(2,2,4);
plot(w/pi,angle(h2));
grid;
title('pho pha cua bi dich tan so');
xlabel('omega/pi');
ylabel('biên do');
Nhận xét: thông số đặc trưng cho sự dịch chuyển tần số là h1,h2,x1,x2, trong đó
x2=exp(wo*i*n).*x1;
h2=freqz(x2,1,w);
là lệnh đặc trưng nhất (xác định đáp ứng tần số của hàm e mũ :x2)
d- tính chất điều chế
%chuong trinh
w=-pi:2*pi/225:pi;
x1=[1 3 5 7 9 11 13 15 17];
x2=[1 -1 1 -1 1 -1 1 -1 1];
y=x1.*x2;
h1=freqz(x1,1,w)
h2=freqz(x2,1,w)
h3=freqz(y,1,w)
subplot(3,1,1)
plot(w/pi,abs(h2));
grid;
title('pho bien do cua day x1')
xlabel('omega/pi');
ylabel('bien do');
subplot(3,1,2)
plot(w/pi,abs(h2));
grid;
title('pho bien do cua day x2')
xlabel('omega/pi');
ylabel('bien do');
subplot(3,1,3);
plot(w/pi,angle(h1));
title('pho bien do cua day tich');
xlabel('omega/pi');
ylabel('bien do');
Nhận xét: thông số đặc trưng cho tính chất diều chế là: h1,h2,h3.
d-tính chất ngược thời gian
%chuong trinh
w=-pi:2*pi/225:pi;
x=[1 2 3 4];
L=length(x)-1;
h1=freqz(x,1,w)
h2=freqz(fliplr(x),1,w);
h3=exp(w*L*i).*h2;
subplot(2,2,1)
plot(w/pi,abs(h2));
grid;
title('pho bien do cua day goc')
xlabel('omega/pi');
ylabel('bien do');
subplot(2,2,2)
plot(w/pi,abs(h2));
grid;
title('pho bien do cua day nguoc thoi gian')
xlabel('omega/pi');
ylabel('bien do');
subplot(2,2,3);
plot(w/pi,angle(h1));
title('pho pha cua day goc');
xlabel('omega/pi');
ylabel('bien do');
subplot(2,2,4);
plot(w/pi,angle(h3));
title(' pho pha cua day nguoc thoi gian');
xlabel('omega/pi');
grid;
Nhận xét : lệnh cho tính chất ngược thời gian là h1,h2,h3 trong đó
h2=freqz(fliplr(x),1,w) là lệnh đặc trưng nhất ( fliplr là hàm ta ma trận ngược với ma
trận x): xác định đáp ứng tần số của ma trận ngược với x
III-ÁP DỤNG
1-tính toán DTFT
%Tinh cac mau tan so cua DTFT
w=0:8*pi/511:pi;
num=[0.9 0.7 -0.5 0.3 1];
den=[1 0.3 -0.5 0.7 0.9];
h=freqz(num,den,w);
% do thi cua DTFT
figure
subplot(2,1,1)
plot(w/pi,real(h));
grid;
title('phan thuc bien doi DTFT cua x[n]');
xlabel('omega/pi');
ylabel('bien do');
subplot(2,1,2)
plot(w/pi,imag(h));
grid;
title('phan ao bien doi DTFT cua x[n]');
xlabel('omega/pi');
ylabel('bien do');
figure
subplot(2,1,1)
plot(w/pi,abs(h));
grid;
title('pho bien do cua tin hieu x[n]');
xlabel('omega/pi)');
ylabel('bien do');
subplot(2,1,2)
plot(w/pi,angle(h));
grid;
title('pho pha cua tin hieu x[n]');
xlabel('omega/pi');
ylabel('pha do bang radians')
grid
• NX: điểm nhảy trong phổ pha chính là khoảng thời gian tín hiệu nhảy sang
trạng thái khác
2-khảo sát tính chất của DTFT
a-dịch chuyển về thời gian với hai dãy có chiều dài thay đổi và hai độ dịch thời khác
nhau
%bai 4.2 Tinh chat dich chuyen thoi gian
%chuong trinh
w=-pi:2*pi/225:pi;
wo=0.4*pi;
d=5;
x1=[1 3 5 7 9 ]
D=10;
x=[1 2 3 4 5 6 7 8 9];
h1=freqz(x,1,w);
h2=freqz([zeros(1,d) x],1,w);
h3=freqz(x1,1,w);
h4=freqz([zeros(1,D) x1],1,w);
subplot(4,2,1)
plot(w/pi,abs(h1));
grid;
title('pho bien do day goc')
subplot(4,2,2)
plot(w/pi,abs(h2));
grid;
title('pho bien do cua day bi dich')
subplot(4,2,3)
plot(w/pi,angle(h1));
grid
title('pho pha cua day goc')
subplot(4,2,4)
plot(w/pi,angle(h2));
grid;
title('pho pha cua day bi dich')
subplot(4,2,5)
plot(w/pi,abs(h3));
grid;
title('pho bien do day goc')
subplot(4,2,6)
plot(w/pi,abs(h4));
grid;
title('pho bien do cua day bi dich')
subplot(4,2,7)
plot(w/pi,angle(h3));
grid
title('pho pha cua day goc')
subplot(4,2,8)
plot(w/pi,angle(h4));
grid;
title('pho pha cua day bi dich')
% ket qua
b-dịch chuyển về tần số với hai dãy có chiều dài thây đổi và hai độ dịch tần khác nhau
% tinh chat dich chuyen tan so
%chuong trinh
w=-pi:2*pi/225:pi;
wo=0.4*pi;
x1=[1 3 5 7 9 11 13 15 17];
L=length(x1);
x2=[1 2 3 4 5 6];
l=length(x2);
h1=freqz(x1,1,w);
h2=freqz(x2,1,w);
n=0:L-1;
m=0:l-1;
x3=exp(wo*i*n).*x1;
h3=freqz(x3,1,w);
x4=exp(wo*i*m).*x2;
h4=freqz(x4,1,w);
subplot(4,2,1)
plot(w/pi,abs(h1));
grid;
title('pho bien do cua day goc')
subplot(4,2,2)
plot(w/pi,abs(h3));
grid;
title('pho bien do cua day bi dich tan so')
subplot(4,2,3);
plot(w/pi,angle(h1));
title('pho pha cua day goc');
subplot(4,2,4);
plot(w/pi,angle(h3));
grid;
title('pho pha cua bi dich tan so');
subplot(4,2,5)
plot(w/pi,abs(h2));
grid;
title('pho bien do cua day goc')
subplot(4,2,6)
plot(w/pi,abs(h4));
grid;
title('pho bien do cua day bi dich tan so')
subplot(4,2,7);
plot(w/pi,angle(h2));
title('pho pha cua day goc');
subplot(4,2,8);
plot(w/pi,angle(h4));
grid;
title('pho pha cua bi dich tan so');
%kết quả
c-ngược thời gian với hai dãy có chiều dài thay đổi
%tinh chat nguoc thoi gian
%chuong trinh
w=-pi:2*pi/225:pi;
x=[1 2 3 4];
x1=[1 4 6 8 3 2 9 1 2];
L=length(x)-1;
l=length(x1)-1;
h1=freqz(x,1,w)
h2=freqz(fliplr(x),1,w);
h3=exp(w*L*i).*h2;
h4=freqz(x1,1,w)
h5=freqz(fliplr(x1),1,w);
h6=exp(w*L*i).*h5;
subplot(4,2,1)
plot(w/pi,abs(h1));
grid;
title('pho bien do cua day goc')
xlabel('omega/pi');
ylabel('bien do');
subplot(4,2,2)
plot(w/pi,abs(h3));
grid;
title('pho bien do cua day nguoc thoi gian')
xlabel('omega/pi');
ylabel('bien do');
subplot(4,2,3);
plot(w/pi,angle(h1));
title('pho pha cua day goc');
xlabel('omega/pi');
ylabel('bien do');
subplot(4,2,4);
plot(w/pi,angle(h3));
title(' pho pha cua day nguoc thoi gian');
xlabel('omega/pi');
grid;
subplot(4,2,5)
plot(w/pi,abs(h4));
grid;
title('pho bien do cua day goc')
xlabel('omega/pi');
ylabel('bien do');
subplot(4,2,6)
plot(w/pi,abs(h6));
grid;
title('pho bien do cua day nguoc thoi gian')
xlabel('omega/pi');
ylabel('bien do');
subplot(4,2,7);
plot(w/pi,angle(h4));
title('pho pha cua day goc');
xlabel('omega/pi');
ylabel('bien do');
subplot(4,2,8);
plot(w/pi,angle(h6));
title(' pho pha cua day nguoc thoi gian');
xlabel('omega/pi');
grid;
% ket qua
IV-NHẬN XÉT VÀ KẾT LUẬN
Bài thực hành này giúp ta tìm hiểu về biến đổi DTFT (biến đổi fourier thời gian rời
rạc) và các tính chất của DTFT ,các thuật toán và các hàm, ý nghĩa của các hàm
BIẾN ĐỔI Z
I-LÝ THUYẾT
1-trong phần này sẽ dùng MATLAB để nghiên cứu biến đổi z của dãy x[n].Trước tiên
nghiên cứu biến đổi z của dãy x[n] được biển diễn bằng phân thức hữu tỉ của hai đa
thức với biến số phức z-1 dạng:
1 2
0 1 2
1 2
0 1 2
...( )
...
M
M
M
M
b b z b z b zX z
a a z a z a z
− − −
− − −
+ + + +
=
+ + + +
Hoặc dưới dạng khai triển:
0 0
0
1
( )
( )
( )
M
m
n M m
N
k
k
z z
bX z z
a z p
− =
=
−
=
−
∏
∏
Trong đó Pk là các điểm cực,còn Zm là các điểm không.Ngoài ra còn có thêm (N-M)
điểm không tại gốc tọa độ z=0 nếu N>M hoặc M-N các điểm cực cũng tại z=0 nếu
N>M
Nếu đánh giá X(z) trên vòng tròn đơn vị z=ejw thì sẽ thu được X(ejw) là biến đổi
FOURIER rời rạc của dãy x[n] .Trong MATLAB để đánh giá biến đổi z trên vòng
tròn đơn vị sử dụng hàm FREQZ
2-Phân tích biến đổi z
Biến đổi z của 1 dãy thời gian rời rạc x[n] được định nghĩa theo công thức:
{ }( ) [ ] [ ] n
n
X z Z x n x n z
∞
−
=−∞
= = ∑ trong đó z là 1 biến số phức
Đó lá 1 phép ánh xạ 1 dãy thời gian rời rạc thành1 hàm biến số phức X(z).Nếu biến
đổi z tồn tại có nghĩa là hàm số phức X(z) được xác định từ tích phân CAUCHY
{ }1 11( ) [ ] ( )
2
n
C
x z Z X n X z z dz
jpi
− −
= = ∫Ñ
Trong đó C là vòng kín bao quanh gốc tọa độ nằm trong miền hội tụ ROC của X(z)
Trong trường hợp hệ thống LTI thời gian rời rạc có hàm chuyền và trong DSP thì
phấn lớn các hệ thống đều có M<N,khi đó hàm truyền được phân tích thành dạng các
phân thức riêng phần nhờ hàm RESIDUEZ: 1
1
( )
1
N
K
k k
AX z
p z−
=
=
−
∑
Với Ak =(1-Pkz-1) X(z),z=pk:
Nếu Z có các điểm cực bội và M≥ N , đặc biệt nếu X(z) có 1 điểm cực bậc nhất tại
z=p thì biểu thức của biến đổi z được khai triển thành dạng :
1 1
0 1 1
( )
1 (1 )
M N N s
r mK
r
r k mk i
CAX z B z
p z p z
−
−
− −
= = =
= + +
− −
∑ ∑ ∑
Các hệ số Br có thể thu được bằng cách chia dọc tử số cho mẫu số. quá trình chia sẽ
kết thúc khi còn lại bậc thấp hơn bậc của mẫu số
3-giản đồ điểm cực/điểm không
4-xác định các điểm cục và điểm không
II-THỰC HÀNH
1-khai triển biến đổi z thành thừa số
% chuong trinh ve gian do cuc khong
num=[2 5 9 5 3];
den=[5 45 2 1 1];
zplane(num,den)
[z,p,k]=tf2zp(num,den);
sos=zp2sos(z,p,k)
% ket qua
z =
-1.0000 + 1.4142i
-1.0000 - 1.4142i
-0.2500 + 0.6614i
-0.2500 - 0.6614i
p =
-8.9576
-0.2718
0.1147 + 0.2627i
0.1147 - 0.2627i
k =
0.4000
sos =
0.4000 0.8000 1.2000 1.0000 9.2293 2.4344
1.0000 0.5000 0.5000 1.0000 -0.2293 0.0822
Nx: hàm zp2sos có chức năng phân tích hệ thống cho ra ma trận có cỡ LX6
Hàm tf2zp : xác định điểm cực và điểm không của hàm truyền
2-biến đổi z ngược
% chuong trinh tim bien doi z nguoc cua ham truyen co dang phuong trinh(*)
num=[2 5 9 5 3];
den=[5 45 2 1 1];
[x,t]=impz(num,den)
%ket qua chuong trinh
x =
1.0e+007 *
0.0000
-0.0000
0.0000
-0.0000
0.0002
-0.0018
0.0161
-0.1439
1.2887
t =
0
1
2
3
4
5
6
7
8
Nx: hàm impz: xác định đáp ứng xung của hệ thống
3-biểu diễn hàm truyền theo biến số trạng thái
% tim ma tran trang thai cua ham truyen
num=[-11/6 3/2 -7/12 1/12];
den=[3 1.5 1 0.5];
[A B C D]=tf2ss(num,den)
% ket qua thuc hien
A =
-0.5000 -0.3333 -0.1667
1.0000 0 0
0 1.0000 0
B =
1
0
0
C =
0.8056 0.0093 0.1296
Nx: hàm tf2ss: tìm các ma trận trạng thái
III-ÁP DỤNG
1-viết chương trình matlab để tính và hiển thị các điểm cực và điểm không, vẽ giản
đồ điểm cực và điểm không của 1 biến đổi z có dạng phân thức hữu tỷ của z-1.dùng
chương trình đó để phân tích biến đổi z của hệ thống có hàm truyền sau:
1 2 3 4
1 2 3 4
0,9 0,7 0,5 0,3( )
1 0,3 0,5 0,7 0,9
z z z zH z
z z z z
− − − −
− − − −
+ − + +
=
+ − + +
% chuong trinh
num=[0.9 0.7 -0.5 0.3 1]
den=[1 0.3 -0.5 0.7 0.9]
zplane(num,den)
[z,p,k]=tf2zp(num,den);
sos=zp2sos(z,p,k)
%ket qua
num =
0.9000 0.7000 -0.5000 0.3000 1.0000
den =
1.0000 0.3000 -0.5000 0.7000 0.9000
sos =
0.9000 1.8655 1.0900 1.0000 1.7115 0.8257
1.0000 -1.2950 0.9175 1.0000 -1.4115 1.0900
2-nếu các điểm cực và điểm không của biến đổi z đã cho thì có thể tìm lại được biểu
thức của biến đổi z bằng cách dùng lệnh sau :
[num,den]=zp2tf(z,p,k)
Hãy viết chương trình matlab để tính và hiển thị biến đổi z của các điểm 0: z1=0,3;
z2=2,5; z3=-0,2+j0,4; z4=-0,2-j0,4
Và các điểm cực : p1=0,5; p2=-0,75; p3=0,6+j0,7; p4=0,6-j0,7
Với k=3,9
% (ap dung)chuong trinh tim bien doi z tu diem cuc va diem khonh
z=[0.3;2.5;-0.2+j*0.4;-0.2-j*0.4]
p=[0.5;-0.75;0.6+j*0.7;0.6-j*0.7]
k=3.9
[num,den]=zp2tf(z,p,k)
%ket qua chuong trinh
z =
0.3000
2.5000
-0.2000 + 0.4000i
-0.2000 - 0.4000i
p =
0.5000
-0.7500
0.6000 + 0.7000i
0.6000 - 0.7000i
k =
3.9000
num =
3.9000 -9.3600 -0.6630 -1.0140 0.5850
den =
1.0000 -0.9500 0.1750 0.6625 -0.3187
3-tìm các ma trận trạng thái của các hàm truyền sau:
a/
1 2
1 2 3
1 4,2 0,8( )
1 2,5 3
z zH z
z z z
− −
− − −
+ +
=
− + −
%(ap dung) tim ma tran trang thai cua ham truyen
num=[1 4.2 0.8 0];
den=[1 -2.5 3 -1];
[A B C D]=tf2ss(num,den)
% ket qua chuong trinh
A =
2.5000 -3.0000 1.0000
1.0000 0 0
0 1.0000 0
B =
1
0
0
C =
6.7000 -2.2000 1.0000
D =
1
b/
3 2
3 2
8 16 12 9( )
1,6 1,1 0,3
z z zH z
z z z
+ + +
=
+ + +
%(ap dung) tim ma tran trang thai cua ham truyen
num=[9 12 16 8];
den=[3 1.1 1.6 1];
[A B C D]=tf2ss(num,den)
% ket qua thuc hien
A =
-0.3667 -0.5333 -0.3333
1.0000 0 0
0 1.0000 0
B =
1
0
0
C =
2.9000 3.7333 1.6667
D =
3
V- NHẬN XÉT VÀ KẾT LUẬN
Bài thực hành nghiên cứu về biến dổi z cua dãy x[n], vẽ và xác dịnh các điểm cực
điểm không hiểu được các hàm sử dụng trong chương trình dể giải quyết bài toán
BÀI 6: THIẾT KẾ CÁC BỘ LỌC
I-LÝ THUYẾT
1- Các chỉ tiêu thiết kế bộ lọc
2-thiết kế bộ lọc IIR
3-Thiết kế bộ lọc FIR
II-THỰC HÀNH
1-thiết kế bộ lọc IIR
• Thiết kế mạch lọc elliptic va butterworth thông thấp với các quy định sau:
Tần số mép của dải thông fp=800hz, mép của dải chặn fs=1khz , độ mấp mô của dải
thông 0,5Db, độ suy giảm cực tiểu của dải chặn 40dB và tần số lấy mẫu F=4khz
%thiet ke bo loc elliptic
[N,Wn]=ellipord(0.4,0.5,.05,40);
[b,a]=ellip(N,0.5,40,Wn);
[h,omega]=freqz(b,a,256);
subplot(1,2,1);
plot(omega/pi,20*log10(abs(h)));
grid;
xlabel('omega/pi');
ylabel('bien do(db)');
title('mach loc IIR elliptic');
%thiet ke mach loc
[N,Wn]=buttord(0.4,0.5,.05,40);
[b,a]=butter(N,Wn);
[h,omega]=freqz(b,a,256);
subplot(1,2,2);
plot(omega/pi,20*log10(abs(h)));
grid;
xlabel('omega/pi');
ylabel('bien do(db)');
title('mach loc IIR butterworth');
kết quả chương trình
Nx: để thiết kế bộ lọc IIR ta can ước lượng bậc của bộ lọc , xác định bậc và xác định đáp
ứng tần số của bộ lọc
• thiết kế bộ lọc thông dải sử dụng phép biến đổi song song tuyến tính để thiết
kế bộ lọc chebychev loại 1 bậc 5, dải thông 0,1-0,5hz tần số lấy mẫu 2hz. Các
tần số cắt là 1 5
pi
ω = 2ω pi=
%tk bo loc thong dai su dung phep bien doi song song tuyen tinh
[z,p,k]=cheb1ap(5,3);
[A,B,C,D]=zp2ss(z,p,k);
fs=2;
u1=2*fs*tan(0.1*(2*pi/fs)/2);
u2=2*fs*tan(0.5*(2*pi/fs)/2);
Bw=u2-u1;
W0=sqrt(u1*u2);
[At,Bt,Ct,Dt]=lp2bp(A,B,C,D,W0,Bw);
[Ad,Bd,Cd,Dd]=bilinear(At,Bt,Ct,Dt,2,0.1);
[bz,az]=ss2tf(Ad,Bd,Cd,Dd);
[h,f]=freqz(bz,az,256,2);
semilogy(f,abs(h));
grid;
xlabel('frequency');
title('dap ung bien do');
kết quả chay chương trình
2-thiết kế bộ lọc FIR
• thiết kế bộ lọc FIR bằng phương pháp cửa sổ
%thiet ke bo loc fir
wp=0.2*pi;
ws=0.3*pi;
As=50;
bw=ws-wp;
N=ceil((As-7.95)/(2.285*bw))+1;
n=0:(N-1);
beta=0.5842*(50-21)^0.4+0.07886*(50-21);
wc=(ws+wp)/2;
h=(wc/pi)*sinc(wc*(n-N/2)).*besseli(0,beta*sqrt(1-4*((n-N/2)/
(N/2)).^2))/besseli(0,beta);
stem(n,h)
title('dap ung xung don vi cua bo loc FIR cua so kaiser');
pause
b=h;
a=[1];
freqz(b,a,500,1000);
title('dap ung tan so cua bo loc FIR cua so kaiser')
pause
t=0:0.001:0.1;
x=sin(2*pi*30*t)+sin(2*pi*450*t);
y=filter(b,a,x);
subplot(2,1,1);
plot(t,x);
title('tin hieu gom 2 tan so:30hz va 450hz');
subplot(2,1,2);
plot(t,y);
title('tin hieu da loc');
xlabel('thoi gian(s)');
• thiết kế bộ lọc nhiều dải tần:
%tk bo loc FIR nhieu dai tan
n=129;
f=[0 0.3 0.5 0.7 0.9 1];
a=[0 0.5 0 1 0];
up=[0.00 0.51 0.03 1.02 0.05];
lo=[-0.005 0.49 -0.03 0.98 -0.05];
b=fircls(n,f,a,up,lo);
[hh,ff]=freqz(b,1,512,2);
plot(ff,abs(hh),'b-');
grid;
xlabel('tan so chuan hoa');
ylabel('bien do');
• thiết kế bộ lọc FIR có đáp ưng tần số tùy chọn
%tk bo loc FIR co dap ung tan so tuy chon
b=cfirpm(38,[-1 -0.5 -0.4 0.3 0.4 0.8],{'multiband',[5 1 2 2 2 1]},[1 10 5]);
[hh,ff]=freqz(b,1,512,2,'whole');
plot(ff,abs(hh),'b-');
grid;
xlabel('tan so chuan hoa');
ylabel('bien do');
II-ÁP DỤNG
1- thiết kế bộ lọc IIR
Thiết kế bộ lọc thông dải dùng hàm cheby2 với các yêu cầu như sau:
-giới hạn của dãy chắn dưới :0,3pi
-giới hạn của dãy chắn trên : 0,6pi
- suy hao dải chắn :50dB
- các giới hạn trên và dưới của dải thông: 0,4pi và 0,5pi
- gợn sóng dải thông :0,5dB
[z,p,k]=cheb2ap(10,0.5);
[A,B,C,D]=zp2ss(z,p,k);
As=50;
u1=2*As*tan(0.4*pi*(2*pi/As)/2);
u2=2*As*tan(0.5*pi*(2*pi/As)/2);
Bw=u2-u1;
W0=sqrt(u1*u2);
[At,Bt,Ct,Dt]=lp2bp(A,B,C,D,W0,Bw);
[Ad,Bd,Cd,Dd]=bilinear(At,Bt,Ct,Dt,2,0.1);
[bz,az]=ss2tf(Ad,Bd,Cd,Dd);
[h,f]=freqz(bz,az,256,2);
semilogy(f,abs(h));
grid;
xlabel('frequency');
title('dap ung bien do');
%ket qua
2-thiết kế bộ lọc FIR
a-bằng phương pháp cửa sổ
thiết kế bộ lọc FIR số , thông thấp pha tuyến tính sử dụng phương pháp cửa sổ
kaiser với các yêu cầu thiết kế : tần số lấy mẫu 10khz, tần số giới hạn giải
thông 1,5khz ,tần số giới hạn giải chắn 2khz , suy hao giải thông 0,1Db ,suy
hao giải chắn 80dB,. Tính bậc của bộ lọc
%thiet ke bo loc fir
wp=1,5;
ws=2;
Ap=0.1;
As=80;
bw=ws-wp;
N=ceil((As-7.95)/(2.285*bw))+1;
n=0:(N-1);
beta=0.5842*(50-21)^0.4+0.07886*(50-21);
wc=(ws+wp)/2;
h=(wc/pi)*sinc(wc*(n-N/2)).*besseli(0,beta*sqrt(1-4*((n-N/2)/
(N/2)).^2))/besseli(0,beta);
stem(n,h)
title('dap ung xung don vi cua bo loc FIR cua so kaiser');
pause
b=h;
a=[1];
freqz(b,a,500,1000);
title('dap ung tan so cua bo loc FIR cua so kaiser')
pause
t=0:0.001:0.1;
x=sin(2*pi*30*t)+sin(2*pi*450*t);
y=filter(b,a,x);
subplot(2,1,1);
plot(t,x);
title('tin hieu gom 2 tan so:30hz va 450hz');
subplot(2,1,2);
plot(t,y);
title('tin hieu da loc');
xlabel('thoi gian(s)');
figure;
b- FIR nhiều dải tần
thiết kế bộ lọc FIR có dáp ứng tần số được mô tả như sau
- dải tần từ -1 ÷ ÷ -0,8: biên độ giảm từ 5 xuống 2 trọng số bằng 1
- dải tần từ -0,7 ÷ 0,5:biên độ bằng 2 trọng số bằng 5
- dải tần từ -0,4 ÷ -0,1 : biên độ giảm từ 2 xuống 1 trong số bằng 1
- dải tần từ 0,5 ÷ 0,7 : biên độ bằng 2 trọng số bằng 5
- dải tần từ 0,8 ÷ 1: biên độ tăng từ 2 lên 5, trọng số bằng 1
%tk bo loc FIR co dap ung tan so tuy chon
b=cfirpm(38,[-1 -0.8 -0.7 0.5 -0.4 -0.1 0.1 0.4 0.5 0.7 0.8 1],{'multiband',[5 2
2 2 2 1 1 2 2 2 2 5]},[1 5 1 1 5 1]);
[hh,ff]=freqz(b,1,512,2,'whole');
plot(ff,abs(hh),'b-');
grid;
xlabel('tan so chuan hoa');
ylabel('bien do');
BÀI 7: MÔ PHỎNG MÔ HÌNH HỆ THỐNG VIỄN THÔNG
I-LÝ THUYẾT
Bài thí nghiệm này tìm hiểu phương pháp mô hình hóa một hệ thống thông tin
đơn giản như hình 7.1
• mã hóa nguồn
o nén theo μ-law
o lượng tử hóa
o …
• mã sửa sai
o mã hamming
o mã BCH
o mã tích chập
o …
• điều chế
o AM/FM
o ASK
o QPSK
o …
II-THỰC HÀNH
Trong phần này chúng ta sẽ thực hiện mô hình 1 hệ thống truyền thông rời
rạc như hình 7.2
Truyền dẫn
Thông tin
truyền
Mã hóa
nuồn
Mã sửa
sai Điều chế
K
ênh truyền
Thu nhậnThông tin
nhận
Giải mã
nguồn
Giải mã
sửa sai
Giải điều
chế
K
ênh truyền
(nhiễu gauss ian)
Điều chế
QASK
Mã hóa
BCH
Tín hiệu
digital
Giải điều
chế QASK
Giải mã
BCH
Tín hiệu
digital thu
t
Hình 7.2: mô hình hệ thống truyền tin rời rạc
%Tao tin hieu nguon
k=11
msg=randint(k*2,1)
subplot(4,1,1)
stem(msg,'.')
ylabel('digital message')
%ma hoa bch
n=15
code=encode(msg,n,k,'bch')
subplot(4,1,2)
stem(code,'.')
ylabel('bch')
%dieu che qask su dung bo dieu che m-qask
m=16
fd=1
fc=10
fs=30
modu=dmod(code,fc,fd,fs,'qask',m)
subplot(4,1,3)
plot(modu)
ylabel('qask')
%kenh truyen co nhieu
std_value=0.1
modu_noise=modu+randn(length(modu),1)*std_value
%giai dieu che qask
demo=ddemod(modu_noise,fc,fd,fs,'qask',m)
%giai ma bch
msg_r=decode(demo,n,k,'bch')
subplot(4,1,4)
stem(msg_r,'.')
ylabel('received message')
III-ÁP DỤNG
Thực hiện mô hình digital communications như mô hình sau:
K
ênh truyề n
(nhiễu gau ssian)
Điều chế
FSK
Mã hóa
BCH
msg
Giải điều
chế FSK
Giải mã
BCHMsg thu
%Tao tin hieu nguon
k=11;
msg=randint(k*2,1);
subplot(4,1,1);
stem(msg,'.');
ylabel('digital message');
%ma hoa bch
n=15;
code=encode(msg,n,k,'bch');
subplot(4,1,2);
stem(code,'.');
ylabel('bch');
%dieu che fsk su dung bo dieu che m-fsk
m=16;
fd=1;
fc=10;
fs=30;
modu=fskmod(code,fc,fd,fs,'fsk',m);
subplot(4,1,3);
plot(modu);
ylabel('qask');
%kenh truyen co nhieu
std_value=0.1;
modu_noise=modu+randn(length(modu),1)*std_value;
%giai dieu che fsk
demo=fskdemod(modu_noise,fc,fd,fs,'fsk',m);
%giai ma bch
msg_r=decode(demo,n,k,'bch');
subplot(4,1,4);
stem(msg_r,'.');
ylabel('received message');
IV-NHẬN XÉT VÀ KẾT LUẬN
Bài thực hành tìm hiểu về phương pháp mô hình hóa 1 hệ thống thông tin.
Nguyên tắc chung và thứ tự của mô hình là là tạo tín hiệu nguồn, mã hóa tín hiệu, diều
chế tín hiệu và giải điều chế, kênh truyền nhiễu cuối cùng là giải mã hóa đề thu đươc tín
hiệu
Bài thực hành còn giúp ta tìm hiểu được các hàm và nguyên tắc sử dụng các hàm
đó
KẾT LUẬN CHUNG: đợt thực tập này giúp ta bước đầu làm quen với phần
mềm matlab , hiểu được tầm quan trọng của tầm quan trọng của việc mô phỏng các
chương trình trên phần mềm này. Hiểu được tầm quan trọng trong việc biến đổi tín
hiệu sang số( có rất nhiều tiện ích nhưng quan trọng là có thể khử nhiễu và tái điều
chế được mà đơn giản)
Các kết quả thu được sau khi chạy chương trình mô phỏng dúng theo lý
thuyết đã học
Khó khăn: do bước dàu mới làm quen với phần mềm và cách mô phỏng nó
nên có những vấn đề vẫn còn khúc mắc nhưng với sự giúp đỡ tận tình của các thầy
cô em đã giải quyết được một số vấn đề
Các file đính kèm theo tài liệu này:
- bai_tap_su_ly_tin_hieu_so_tren_matlab_3246.pdf