Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
1,09 MB
Nội dung
MỤC LỤC MỤC LỤC HƯỚNG DẪN BÀI 1: PHẦN MỀM MATLAB 1.1 KHỞI ĐỘNG MATLAB 1.2 CÁC VẤN ĐỀ CƠ BẢN 1.2.1 Các phép toán toán tử 1.2.2 Khai báo biến 1.2.3 Các lệnh thường dùng 1.3 LẬP TRÌNH TRONG MATLAB 1.3.1 Các phát biểu điều kiện if, else, elseif 1.3.2 Switch 1.3.3 While 1.3.4 For 10 1.3.5 Break: 10 1.4 MA TRẬN 10 1.4.1 Các thao tác ma trận 10 1.4.2 Vector 14 1.4.3 Đa thức 14 1.5 ĐỒ HOẠ 15 1.5.1 Các lệnh vẽ 15 1.5.2 Tạo hình vẽ 15 1.5.3 Kiểu đường vẽ 15 1.5.4 Vẽ với hai trục y 16 1.5.5 Vẽ đường cong 3-D 17 1.5.6 Vẽ nhiều trục toạ độ 17 1.5.7 Đặt thông số cho trục 18 1.5.8 Đồ hoạ đặc biệt 22 1.5.9 Đồ hoạ 3D 24 1.5.10 Thực hành vẽ đồ thị 25 1.6 CÁC FILE VÀ HÀM 27 1.6.1 Script file (file kịch bản) 27 1.6.2 File hàm 27 1.6.3 Các hàm toán học 28 1.6.4 Các phép toán hàm toán học 29 1.6.5 Thực hành script function 30 BÀI 2: TÍN HIỆU RỜI RẠC THEO THỜI GIAN 37 2.1 CÁC TÍN HIỆU SƠ CẤP 37 2.2 CÁC PHÉP TOÁN 38 2.3 KIỂM TRA TÍNH CHẤT TUYẾN TÍNH VÀ BẤT BIẾN 38 2.4 HỆ LTI 40 BÀI 3: BIẾN ĐỔI Z 43 3.1 CÁC ĐIỂM CỰC VÀ ĐIỂM KHÔNG 43 3.2 PHÂN TÍCH DÙNG PHƯƠNG PHÁP THẶNG DƯ 44 3.3 BIẾN ĐỔI Z VÀ Z NGƯỢC 45 BÀI 4: BIẾN ĐỔI FOURIER RỜI RẠC 47 4.1 TÍNH DTFT 47 4.2 FFT VÀ CÁC TÍNH CHẤT 48 BÀI 5: BỘ LỌC SỐ FIR 51 5.1 CÁC LOẠI BỘ LỌC 51 5.2 PHƯƠNG PHÁP CỬA SỔ 53 HƯỚNG DẪN MÔ TẢ MÔN HỌC Thực hành xử lý tín hiệu số mơn học hỗ trợ cho mơn Xử lý tín hiệu số chun ngành Kỹ thuật Điện tử Truyền thông Môn học dựa MATLAB để kiểm chứng lý thuyết học mơn Xử lý tín hiệu số NỘI DUNG MƠN HỌC Bài Phần mềm MATLAB: MATLAB, cách lập trình cách xử lý ma trận, vẽ đồ thị MATLAB. Bài 2: Tín hiệu rời rạc theo thời gian: cách biểu diễn tín hiệu hệ thống rời rạc theo thời gian, tính chất đáp ứng xung hệ LTI. Bài 3: Biến đổi z z ngược: chuyển tín hiệu từ miền thời gian sang miền z, tính chất biến đổi z chuyển tín hiệu hữu tỷ miền z sang miền thời gian. Bài 4: Biến đổi Fourier rời rạc: chuyển tín hiệu rời rạc miền thời gian sang miền tần số, dùng thuật toán FFT để xác định biến đổi Fourier rời rạc. Bài 5: Bộ lọc số FIR: thiết kế lọc FIR theo yêu cầu cho trước. BÀI 1: PHẦN MỀM MATLAB BÀI 1: PHẦN MỀM MATLAB Sau học xong này, người học có thể: Sử dụng phần mềm MATLAB. Thực tạo script file hay function lưu trữ MATLAB. Biết công cụ MATLAB. 1.1 KHỞI ĐỘNG MATLAB MATLAB (Matrix laboratory) phần mềm dùng để giải toán kỹ thuật, đặc biệt toán liên quan đến ma trận MATLAB cung cấp toolboxes, tức hàm mở rộng môi trường MATLAB để giải vấn đề đặc biệt xử lý tín hiệu số, hệ thống điều khiển, mạng neuron, fuzzy logic, mô v.v Cửa sổ biểu tượng chương trình MATLAB: Hình 1.1 - Cửa sổ khởi động MATLAB BÀI 1: PHẦN MỀM MATLAB Cửa sổ làm việc MATLAB: Thư mục hành Workspace: biến Danh sách file nhớ có thư mục hành Cửa sổ lệnh Các lệnh Nút Start: chứa thực toolbox Hình 1.2 – Cửa sổ làm việc MATLAB Cửa sổ lệnh (Command window): Là cửa sổ giao tiếp MATLAB nơi nhập giá trị biến, hiển thị giá trị, tính tốn giá trị biểu thức, thực thi hàm có sẵn thư viện hàm người dùng lập trình M-files Các lệnh nhập sau dấu nhắc ‘>>‘ thực thi lệnh phím Enter Để mở chương trình soạn thảo MATLAB, gõ lệnh: >>edit Hình 1.3 – Cửa sổ edit để soạn script file hay function BÀI 1: PHẦN MỀM MATLAB Sau nhập vào đoạn chương trình sau: % Chuong trinh M-file x= 0:pi/6:2*pi; y=sin(x); plot(x,y); Lưu chương trình với tên file plot_sin.m cách nhấn Ctrl+S hay nhấn vào biểu tượng Save Giải thích đoạn chương trình trên: Dịng dịng thích, chuỗi phía sau dấu % khơng dịch Dòng định nghĩa vector x khoảng từ đến 2 giá trị cách khoảng /6 Dòng gán biến y = sin(x) dịng vẽ đồ thị x trục hồnh y trục tung Hình 1.4 – Lưu file cửa số Edit Thực thi chương trình Command window dòng lệnh sau: >>plot_sin Cửa sổ Command History: Các dòng nhập Command window (các dịng dịng nhập biến, dịng lệnh) giữ lại cửa sổ Command History cửa sổ cho phép ta sử dụng lại lệnh cách nhấp đúp chuột lên lệnh hay biến Cửa sổ Workspace: BÀI 1: PHẦN MỀM MATLAB Là cửa sổ thể tên biến bạn sử dụng với kích thước vùng nhớ (số bytes), kiểu liệu (lớp), biến giải phóng sau lần tắt chương trình Cửa sổ Workspace cho phép thay đổi giá trị biến cách nhấn phím chuột phải lên biến chọn Edit Nút Start: Hình 1.5 – Nút Start Cửa sổ Edit: Là cửa sổ dùng để soạn thảo chương trình ứng dụng, khởi động lệnh edit Command Window Chương trình soạn thảo cửa sổ edit có dạng: + Dạng Script file : tập hợp câu lệnh viết dạng liệt kê, khơng có biến liệu vào biến + Dạng function: có biến liệu vào biến 1.2 CÁC VẤN ĐỀ CƠ BẢN 1.2.1 Các phép toán toán tử Các phép toán: + , - , * , / , \ (chia trái) , ^ (mũ) , ‘ (chuyển vị hay số phức liên hiệp) Các toán tử quan hệ : < , , >= , == , ~= Các toán tử logic : & , | (or) , ~ (not) Các hằng: pi 3.14159265 9BÀI 1: PHẦN MỀM MATLAB i, j số ảo eps sai số -52 -1022 realmin số thực nhỏ realmax inf số thực lớn vô lớn NaN Not a number 1023 Chú ý : + Các lệnh kết thúc dấu chấm phẩy, MATLAB kết hình + Các thích đặt phía sau dấu % + Trong trình nhập phần tử hàng dài ta xuống dịng tốn tử ba chấm ( .) 1.2.2 Khai báo biến - Phân biệt chữ hoa chữ thường - Không cần phải khai báo kiểu biến - Tên biến phải bắt đầu ký tự khơng có khoảng trắng - Khơng đặt tên trùng với tên đặc biệt MATLAB - Để khai báo biến toàn cục (sử dụng tất chương trình con), phải dùng thêm từ khố global phía trước 1.2.3 Các lệnh thường dùng >>help tên_hàm % tham khảo help củahàm >>lookfor ‘chuỗi’ %Tìm kiếm chuỗi Ví dụ: >>lookfor ‘filter’ % Tìm hàm có liên quan đến mạch lọc >>clc % Xố hình >>clear tên_biến % Xoá biến >>clear all %Xoá tất biến >> clf %Xố figure >>save % Lưu biến có nhớ >>load % Lấy nội dung biến lưu >>who % liệt kê biến nhớ >>whos % liệt kê chi tiết biến nhớ >>which % Xác định vị trí hàm hay file BÀI 1: PHẦN MỀM MATLAB Ví dụ: >>which plot %Xác định vị trí hàm plot >>what % Liệt kê file có thư mục 1.3 LẬP TRÌNH TRONG MATLAB 1.3.1 Các phát biểu điều kiện if, else, elseif Cú pháp if: if end Nếu cho kết phần lệnh thân if thực Các phát biểu else elseif tương tự 1.3.2 Switch Cú pháp switch sau: switch case n1 case n2 case nn Otherwise end 1.3.3 While Vòng lặp while dùng trước số lần lặp Cú pháp sau: while end BÀI 1: PHẦN MỀM MATLAB 11 1.3.4 For Vòng lặp for dùng biết trước số lần lặp Cú pháp sau: for =:: 1.3.5 Break: Phát biểu break để kết thúc vòng lặp for hay while mà không quan tâm đến điều kiện kết thúc vòng lặp thoả mãn hay chưa 1.4 MA TRẬN 1.4.1 Các thao tác ma trận 1.4.1.1 Nhập ma trận Ma trận mảng có m hàng n cột Trường hợp ma trận có phần tử (ma trận 1x1) ta có số Ma trận có cột hay hàng gọi vector Ta nhập ma trận vào MATLAB nhiều cách: • Nhập danh sách phần tử từ bàn phím • Nạp ma trận từ file • Tạo ma trận nhờ hàm có sẵn MATLAB • Tạo ma trận nhờ hàm tự tạo Khi nhập ma trận từ bàn phím ta phải tuân theo quy định sau: • Ngăn cách phần tử ma trận dấu “,” hay khoảng trắng • Dùng dấu “;” để kết thúc hàng • Bao phần tử ma trận cặp dấu ngoặc vuông [ ] 1.4.1.2 Chỉ số Phần tử hàng i cột j ma trận có ký hiệu A(i,j) Tuy nhiên, ta tham chiếu tới phần tử mảng nhờ số, ví dụ A(k) Trong trường hợp này, ma trận xem cột dài tạo từ cột ma trận ban đầu Như viết A(8) có nghĩa tham chiếu phần tử A(4, 2) (nếu ma trận có hàng) Lưu ý số ma trận thường 1.4.1.3 Toán tử “:” 10 44 BÀI 3: BIẾN ĐỔI Z BÀI 3: BIẾN ĐỔI Z Sau học xong này, người học có thể: Biết cách chuyển đổi tín hiệu miền thời gian rời rạc sang miền z. Biết tính chất biến đổi z. Biểu diễn hàm hệ thống LTI có quan hệ vào – phương trình sai phân hệ số biến đổi z hữu tỉ. 3.1 CÁC ĐIỂM CỰC VÀ ĐIỂM KHÔNG Biến đổi z tín hiệu rời rạc x(n): X z xnz n n X(z) hàm hữu tỉ: N z X z Dz M k 0 N k 0 bk z k a k z k N z b0 z D z a0 z N M Giả sử a0 b0 0: X z b1 M 1 b z M b0 b0 a a z N z N 1 N a0 a0 zM Do N(z) D(z) đa thức theo z nên biểu diễn sau: M X z Gz N M z z z p k 1 N k k 1 k Để biểu diễn đồ thị, điểm cực đánh dấu x điểm không đánh dấu o Bài 3.1 Xác định điểm cực không dựa vào hàm zplane: >>num = [1 3]; % Tử số >>den = [2 7]; % Mẫu số >>zplane(num,den); 43 BÀI 3: BIẾN ĐỔI Z 45 Ta vẽ điểm cực điểm không biết điểm cực điểm không cách đưa thông số vào hàm zplane dạng vector cột: >>zero = [-1 1+j*1]; >>pole = [j*2 -1+j]; >>zplane(zero’,pole’); Để xác định điểm cực không, ta dùng hàm tf2zp: [z,p,k] = tf2zp(num,den) z, p điểm cực không lưu dạng vector hàng, k hệ số khuếch đại: >>num = [1 3]; % Tử số >>den = [2 7]; % Mẫu số >>[z,p,k] = tf2zp(num,den) Nếu cho điểm cực điểm khơng, ta xác định lại biểu thức biến đổi z hàm zp2tf: [num,den] = zp2tf(z,p,k) (z, p dạng vector cột) >>zero = [-1 1+j*1]; >>pole = [j*2 -1+j]; >>k = 2; >>[num,den] = zp2tf(zero’,pole’,k) Bài 3.2 Xác định vẽ điểm cực, điểm không hàm hệ thống sau: H z z 1 z 2 z 3 z 4 45 z 1 z z 3 z Từ xác định miền hội tụ có So sánh với lý thuyết Bài 3.3 Xác định biểu thức biến đổi z có điểm cực 0.5; 0.75; 1+j0.5; 1-j0.5 điểm không 0.3; 0.1; 2-j2; 2+j2 với hệ số khuếch đại k = 0.7 3.2 PHÂN TÍCH DÙNG PHƯƠNG PHÁP THẶNG DƯ Phân tích thành thừa số theo phương pháp thặng dư: AN N1 z A 1 D z p1 z p N z 1 Bài 3.4 Xác định hệ số biểu thức biến đổi z hàm residuez: >>num = [1 3]; % Tử số >>den = [2 7]; % Mẫu số 44 46 BÀI 3: BIẾN ĐỔI Z >>[A,p,k] = residuez(num,den); Ta dùng hàm residuez để xác định lại tử số mẫu số: >>[num,den] = residuez(A,p,k); Ghi lại công thức biến đổi so sánh với kết ban đầu Bài 3.5 Cho hệ thống có phương trình vào / phương trình sai phân hệ số hằng: y(n) = x(n) – 2x(n – 2) + 0.81y(n – 1) Xác định H(z), từ viết chương trình: a Xác định vẽ điểm cực, khơng b Phân tích dùng phương pháp thặng dư 3.3 BIẾN ĐỔI Z VÀ Z NGƯỢC Xét hệ LTI biểu diễn phương trình sai phân hệ số hằng: N M k 1 k 0 y n a k y n k bk xn k Hàm hệ thống hệ LTI biểu diễn phương trình sai phân hệ số hằng: M Y z k 0 bk z k H z X z N a k z k k 1 Biến đổi z ngược: N z N z M N ck z k D z k 0 D z (Nếu bậc tử số nhỏ bậc mẫu số) X z M N M N c k z k k 0 c n k k k 0 Để tính thành phần cịn lại, ta phân tích thành thừa số theo phương pháp thặng AN N1 z A 1 Dz p1 z p N z 1 dư: Nếu giá trị pj = … = pm chuyển số hạng từ Aj đến Am thành: Aj p N z 1 A j 1 1 p N z 1 A j m 1 (1 p N z 1 ) m Áp dụng kết quả: A z Aa n u n , ROC : z a 1 az 45 BÀI 3: BIẾN ĐỔI Z 47 Bài 3.6 Dùng hàm ztrans để biến đổi z dạng công thức: >>syms n x >>x = 2^n; >>ztrans(x) >>x = (-1/2)^n; >>ztrans(x) Bài 3.7 Xác định biến đổi z hàm sau: n-1 a x(n) = (-2) u(n) n b x(n) = n3 u(n) n c x(n) = n u(n) Bài 3.8 Biến đổi z ngược theo giá trị hàm impz >>num = [1 2]; >>den = [1 -1 2]; >>L = 50; %Số lượng mẫu cần tính >>x = impz(num,den,L) % x biến đổi z ngược >>impz(num,den,L); % Vẽ đồ thị Bài 3.9 Xác định vẽ 100 mẫu biến đổi z ngược hàm: X z 0.9 0.7 z 1 0.1z 2 z 3 0.5 z 4 0.5 z 1 0.2 z 3 z z 5 Bài 3.10 Ta xác định biến đổi z ngược cách dùng hàm iztrans >>syms F z >>F = 2*z^(-1)/(1-3*z^(-1)); >>iztrans(F) Bài 3.11 Xác định biến đổi z ngược hàm sau: X z z 1 z 2 ; 1 1 1 z z Y z 46 z 1 z 1 z 2 z 1 BÀI 4: BIẾN ĐỔI FOURIER RỜI RẠC BÀI 4: BIẾN ĐỔI FOURIER RỜI RẠC Sau học xong này, người học có thể: Chuyển tín hiệu rời rạc miền thời gian sang miền tần số cách dùng biến đổi Fourier rời rạc. Tính tốn biến đổi Fourier số thuật tốn. 4.1 TÍNH DTFT Biến đổi Fourier rời rạc (DTFT) mô tả sau: xn.e X e jw jwn X e jw e j w n Bài 4.1 Tính vẽ DTFT có dạng: X e jw e jw 2e j w 0.5e jw >>w = linspace(-4*pi,4*pi,512); % Tạo 512 giá trị từ -4 đến 4 >>num = [1 -2]; >>den = [1 0.5]; >>h = freqz(num,den,w); >>subplot(211),plot(w/pi,abs(h)); >>xlabel(‘\omega/\pi’); >>ylabel(‘Bien do’); >>title(‘Pho bien |X(e^{j\omega})|’); >>subplot(212),plot(w/pi,angle(h)); >>xlabel(‘\omega/\pi’); >>ylabel(‘Pha [rad]’); 47 50 BÀI 4: BIẾN ĐỔI FOURIER RỜI RẠC >>title(‘Pho pha arg(X(e^{j\omega}))’); Để khảo sát chuỗi x(n) hữu hạn, ta cho thông số thứ hàm freqz >>x = [1 7]; >>h = freqz(x,1,w); Bài 4.2 Tính vẽ DTFT khoảng [-,]: X e jw 0.8 3e jw 0.2e j w 0.1e j 3w 0.1e jw 0.4e j w 0.7e j 3w Bài 4.3 Khảo sát DTFT x(n) = [1 -2 -3 -1] khoảng [-,] Tính chất dịch thời gian: DTFT xn m e jwm X (e jw ) Bài 4.4 Khảo sát tính chất dịch thời gian: Tính vẽ DTFT khoảng [-,] x(n - 3) với x(n) cho Bài 4.3 Tính chất dịch tần số: DTFT e jw0n xn X (e j w w0 ) Bài 4.5 Khảo sát tính chất dịch tần số: Tính vẽ DTFT khoảng [-,] x(n)e-j3n với x(n) cho Bài 4.3 Tính chất đảo thời gian: DTFT x n X (e jw ) Bài 4.6 Khảo sát tính chất đảo thời gian: Tính vẽ DTFT khoảng [-,] x(-n) với x(n) cho Bài 4.3 Dùng hàm fliplr để chuyển x(n) thành x(-n) nhân thêm hệ số e j(L-1) biến đổi 4.2 FFT VÀ CÁC TÍNH CHẤT Bài 4.7 Dùng hàm fft ifft để tính DFT IDFT x(n): >>N = 32; >>x = randn(1,N); >>y = fft(x,N); >>x1 = ifft(y,N); 48 BÀI 4: BIẾN ĐỔI FOURIER RỜI RẠC 51 >>subplot(321),stem(abs(x)); >>title(‘x(n)’);xlabel(‘n’); >>subplot(323),stem(abs(y)); >>title([‘FFT(n,’ N ‘)’]);xlabel(‘k’);ylabel(‘Bien do’); >>subplot(324),stem(angle(y)); >>title([‘FFT(n,’ N ‘)’]); xlabel(‘k’);ylabel(‘Pha’); >>subplot(325),stem(abs(x1)); >>title([‘IFFT(FFT(n,’ N ‘))’]); >>xlabel(‘k’);ylabel(‘Bien do’); >>subplot(326),stem(angle(x1)); >>title([‘IFFT(FFT(n,’ N ‘))’]); >>xlabel(‘k’);ylabel(‘Pha’); Bài 4.8 Tạo function cshift để dịch vòng chuỗi m giá trị: function out = cshift(x,m) m0 = m; if abs(m0) > length(x) m0 = rem(m0,length(x)); end while (m0>N = 20; >>m = 3; >>x = randn(1,N); >>y = fft(x,N); >>x1 = cshift(x,m); %Có thể thay hàm circshift sau: x1 = circshift(x’,m)’; 49 52 BÀI 4: BIẾN ĐỔI FOURIER RỜI RẠC >>y1 = fft(x1,N); >>k = 0:N-1; >>y2 = exp(-j*2*pi*k*m/N).*y; >>subplot(221),stem(abs(y1));title(‘y1’); >>subplot(222),stem(angle(y1)); title(‘y1’); >>subplot(223),stem(abs(y2));title(‘y2’); >>subplot(224),stem(angle(y2)); title(‘y2’); Bài 4.9 Viết chương trình khảo sát tính chất dịch vịng miền tần số Bài 4.10 Viết chương trình khảo sát tính chất chập vịng Dùng hàm cconv để tính tích chập vịng Bài 4.11 Viết chương trình khảo sát tính chất đảo miền thời gian 50 BÀI 5: BỘ LỌC SỐ FIR 53 BÀI 5: BỘ LỌC SỐ FIR Sau học xong này, người học có thể: Thiết kế lọc số FIR dựa theo thông số cho trước. 5.1 CÁC LOẠI BỘ LỌC Điều kiện đối xứng phản đối xứng mạch lọc: h(n) = h(M – – n) Dựa tính chất đối xứng hay phản đối xứng chuỗi đáp ứng xung chiều dài N chuỗi đáp ứng xung, người ta phân loại lọc FIR làm loại sau: • Bộ lọc FIR loại 1: h(n) đối xứng, M lẻ, β = 0, = (M – 1)/2 • Bộ lọc FIR loại 2: h(n) đối xứng, M chẵn, β = 0, = (M – 1)/2 • Bộ lọc FIR loại 3: h(n) phản đối xứng, M lẻ, β = /2, = (M – 1)/2 • Bộ lọc FIR loại 4: h(n) phản đối xứng, M chẵn, β = /2, = (M – 1)/2 Đáp ứng tần số FIR cho loại: • Loại 1: H M 1 n 0 j a n cos n e M 1 M 1 a0 h với an 2h M n ;1 n M • Loại 2: M j H n21 bn cos n e • Loại 3: M 1 j H n 21 cn sin n e • Loại 4: M 1 M 1 M M với bn 2h n ;1 n M 1 M 1 n ;1 n với cn 2h M 1 j H n21 d n sin n e 2 M 1 M M n ;1 n với d n 2h =1 51 54 BÀI 5: BỘ LỌC SỐ FIR Bài 5.1 Xác định đáp ứng tần số lọc FIR loại từ chuỗi đáp ứng xung Tạo function FIR_t1 sau: function [a,w,L,Hr] = FIR_t1(h) M = length(h); L = (M-1)/2; a = [h(L+1) 2*h(L:-1:1)]; n = [0:1:L]; w =linspace(0,2*pi,100)’; Hr = cos(w*n)*a'; stem(Hr); Lưu file với tên FIR_t1.m Thực tính tốn với đáp ứng xung h1 = [1.5 -2.5 -2.5 1.5]: >>h1 = [1.5 -2.5 -2.5 1.5]; >> [a,w,L,Hr]=FIR_t1(h1); Bài 5.2 Xác định đáp ứng tần số cho lọc FIR loại 2: Viết function FIR_t2 Thực tính tốn với đáp ứng xung h2 = [1.5 -2.5 3 -2.5 1.5] Bài 5.3 Xác định đáp ứng tần số cho lọc FIR loại 3: Viết function FIR_t3 Thực tính toán với đáp ứng xung h3 = [1.5 -2.5 2.5 -1.5] Bài 5.4 Xác định đáp ứng tần số cho lọc FIR loại 4: Viết function FIR_t4 Thực tính tốn với đáp ứng xung h4 = [1.5 -2.5 -3 2.5 -1.5] Bài 5.5 Cho đáp ứng xung lọc FIR sau: h = [-1 1.3 -2.2 0.6 0.6 -2.2 1.3 -1] Đáp ứng xung h(n) đối xứng với M lẻ nên lọc FIR loại a Biểu diễn đáp ứng xung: >>h = [-1 1.3 -2.2 0.6 0.6 -2.2 1.3 -1]; >>M = length(h); >>n = 0:M-1; >>subplot(221); stem(n,h); >>title(‘Dap ung xung’);xlabel(‘n’);ylabel(‘h(n)’); 52 BÀI 5: BỘ LỌC SỐ FIR 55 b Các hệ số lọc: >>[a,w,L,Hr] = FIR_t1(h); >>subplot(222);stem(0:L,a); >>title(‘Cac he so a(n)’);xlabel(‘n’);ylabel(‘a(n)’); c Đáp ứng tần số: >>w = linspace(0,2*pi,100)'; >>subplot(223);plot(w,Hr); >>title(‘Dap ung tan so’);xlabel(‘\omega’);ylabel(‘H(\omega)’); d Phân bố cực - không: >>subplot(224); zplane(h,1); >>title(‘Bieu cuc – khong’);xlabel(‘Thuc’);ylabel(‘Ao’); Bài 5.6 Thực lại 5.5 với đáp ứng xung h = [-1 1.3 -2.2 0.6 3 0.6 -2.2 1.3 -1] Bài 5.7 Thực lại 5.5 với đáp ứng xung h = [-1 1.3 -2.2 0.6 -0.6 2.2 -1.3 -2 1] Bài 5.8 Thực lại 5.5 với đáp ứng xung h = [-1 1.3 -2.2 0.6 -3 -0.6 2.2 -1.3 -2 1] 5.2 PHƯƠNG PHÁP CỬA SỔ Bài 5.9 Tạo hàm ideal_lp xác định đáp ứng xung lọc thông thấp lý tưởng theo tần số cắt c chiều dài chuỗi đáp ứng xung function hd = ideal_lp(wc,M) alpha = (M-1)/2; n = [0:1:(M-1)]; m = n - alpha + eps; hd = sin(wc*m)./(pi*m); Bài 5.10 Tạo hàm freqz_m tính toán độ lớn pha đáp ứng tần số, hàm trễ nhóm function [db,mag,pha,grd,w] = freqz_m(b,a) 53 56 BÀI 5: BỘ LỌC SỐ FIR % db = Do lon tuong doi theo dB tren doan tu den pi % mag = Do lon tuyet doi tren doan tu den pi % pha = Dap ung pha tren doan tu den pi % grd = Tre nhom tren doan tu den pi % w = Cac mau tan so doan tu den pi % b = Cac he so da thuc tu so cua H(z) (voi FIR: b=h) % a = Cac he so da thuc mau so cua H(z)(voi FIR: a=[1]) [H,w] = freqz(b,a,1000,'whole'); H = (H(1:1:501))'; w = (w(1:1:501))'; mag = abs(H); db = 20*log10((mag+eps)/max(mag)); pha = angle(H); grd = grpdelay(b,a,w); Bài 5.11 Thiết kế lọc thông thấp theo phương pháp cửa sổ Hamming với tham số sau: p = 0.2; s = 0.3; Rp = 0.25 dB; As = 50 dB Việc thiết kế lọc trình tìm tham số, hay chuỗi đáp ứng xung lọc, thoả mãn yêu cầu tiêu kỹ thuật cho trước, cụ thể số tất tham số tuyệt đối (absolute specification) sau: • Tần số cắt dải thông ωp • Tần số cắt dải thơng ωs • Bề rộng dải q độ Δω • Độ gợn sóng dải thơng δp • Độ gợn sóng dải chắn δs Các tham số thường cho dạng đơn vị dB: • Độ gợn sóng dải thông theo dB: R p 20 log 54 1 p 1 p BÀI 5: BỘ LỌC SỐ FIR 57 • Độ suy giảm dải chắn theo dB: As 20 log p 1 p Các hàm cửa sổ MATLAB: boxcar hay rectwin, bartlett, hanning, hamming, blackman, Kaiser >>wp = 0.2*pi; ws =0.3*pi; >>tr_width = ws - wp; >>M = ceil(6.6*pi/tr_width) +1; >>n = [0:1:M-1]; >>wc = (ws+wp)/2; >>hd = ideal_lp(wc,M); >>w_ham = (hamming(M))'; >>h = hd.*w_ham; >>[db,mag,pha,grd,w] = freqz_m(h,[1]); >>delta_w = 2*pi/1000; >>Rp = -(min(db(1:1:wp/delta_w+1))) >>As = -round(max(db(ws/delta_w+1:1:501))) a Đáp ứng xung: >>subplot(221); stem(n,hd); >>axis([0,M-1,-0.1,0.3]); >>title('Dap ung xung ly tuong');xlabel('n'); ylabel('h_d(n)'); b Cửa sổ Hamming: >>subplot(222); stem(n,w_ham); >>axis([0,M-1,0,1.1]); >>title('Cua so Hamming');xlabel('n'); ylabel('w(n)'); c Đáp ứng tần số: >>subplot(223); stem(n,h); >>axis([0,M-1,-0.1,0.3]); 55 58 BÀI 5: BỘ LỌC SỐ FIR >>title('Dap ung tan so');xlabel('n'); ylabel('h(n)'); d Đáp ứng tần số theo dB: >>subplot(224); plot(w,db); >>axis([0,1,-100,10]); >>title('Dap ung tan so theo dB');xlabel('\omega'); ylabel('dB'); Bài 5.12 Thiết kế lọc thông dải theo phương pháp cửa sổ Blackman với tham số sau: s1 = 0.2; p1 = 0.35; p2 = 0.65; s2 = 0.8; Rp = dB; As = 60 dB Quá trình thực 5.11 Về lý thuyết, đáp ứng xung lý tưởng lọc thông dải lý tưởng hiệu đáp ứng xung hai lọc thông thấp lý tưởng Dùng hàm idea_lp 5.9 để xác định đáp ứng xung lọc thông dải lý tưởng tần số cắt chọn trung bình tần số cắt dải thơng dải chắn Thông số độ rộng dải chuyển tiếp để tính chiều dài chuỗi đáp ứng xung chọn giá trị nhỏ độ rộng hai dải chuyển tiếp, từ dải chắn lên dải thông [s1,p1] từ dải thông xuống dải chắn [p2,s2] 56 TÀI LIỆU THAM KHẢO Phạm Hùng Kim Khánh Xử lý tín hiệu số ĐH Công nghệ TPHCM Sanjit K Mitra Digital Signal Processing Laboratory using MatLab Đinh Đức Anh Vũ, Vũ Tuấn Thanh, Lê Trọng Nhân, Tôn Thất Đại Hải Giáo trình Thực hành Xử lý tín hiệu số Bộ mơn Kỹ thuật Máy tính, ĐH Bách Khoa TPHCM Hồ Văn Sung Thực hành Xử lý tín hiệu số với MatLab NXB Khoa học Kỹ thuật 57 ... MƠN HỌC Thực hành xử lý tín hiệu số mơn học hỗ trợ cho mơn Xử lý tín hiệu số chuyên ngành Kỹ thuật Điện tử Truyền thông Môn học dựa MATLAB để kiểm chứng lý thuyết học mơn Xử lý tín hiệu số NỘI... cos(x) tính cos sin(x) tính sin tan(x) tính tang -1 acos(x) tính cos -1 asin(x) tính sin -1 atan(x) tính tang cosh(x) tính e x ex coth(x) tính cosh(x)/sinh(x) sinh(x) tính e x ex tanh(x) tính... tham số vào 36 38 BÀI 2: TÍN HIỆU RỜI RẠC THEO THỜI GIAN BÀI 2: TÍN HIỆU RỜI RẠC THEO THỜI GIAN Sau học xong này, người học có thể: Biết tín hiệu sơ cấp. Thực phép tốn đơn giản. Tính