Bài giảng Làm quen với matlab

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(...

pdf62 trang | Chia sẻ: hunglv | Lượt xem: 1828 | Lượt tải: 0download
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:

  • pdfbai_tap_su_ly_tin_hieu_so_tren_matlab_3246.pdf