1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài 3 TN xử lý số tín hiệu (FIR)

30 85 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 1,44 MB

Nội dung

báo cáo TN Xử lý số tín hiệu online đại học Bách Khoa Thành phố Hồ Chí Minh (HCMUT)Bài 3: P1 FIRHiểu rõ các bước từ thiết kế đến hiện thực bộ lọc FIRIIR lên trên một kit DSP.Quan sát đáp ứng xung và đáp ứng tần số của bộ lọc.Kiểm tra đặc tính (thông thấp, thông cao, thông dải, chắn dải) của bộ lọc. Khảo sát ngõ ra của bộ lọc khi ngõ vào là tín hiệu xung vuông.Hệ thống lại các lý thuyết đã học.

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN - ĐIỆN TỬ BÁO CÁO THÍ NGHIỆM BỘ MÔN: XỬ LÝ SỐ TÍN HIỆU Nhóm: L10 GIẢNG VIÊN HƯỚNG DẪN: HUỲNH VĂN PHẬN Năm học: 2020 – 2021 1.1 Các lọc FIR 1.1.1 Bộ lọc FIR chắn dải Thiết kế, thực khảo sát lọc FIR chắn dải phương pháp cửa sổ Kaiser với thơng số sau: • Chiều dài đáp ứng xung: N = 63 (MATLAB hiển thị bậc lọc 62) • Tần số trung tâm: 2700 Hz • Tần số cắt: 2500 Hz 2900 Hz • Giá trị β = • Tần số lấy mẫu 8000 Hz  Thiết kế lọc dùng MATLAB Khởi động SPTool Dưới cột Filters, nhấn nút New để mở cửa sổ Filter Designer Trong giao diện Filter Designer: a Trong text box Filter: Tên lọc tự đặt (ở filt-x) Tên thay đổi sau b Nhập thơng số thiết kế vào: • Response Type = Bandstop • Design Method = FIR Window • Specify Order: 62 • Window: Kaiser, Beta: • Frequency Specifications: Fs = 8000, Fc1 = 2500, Fc2 = 2900 c Nhấn Design Filter Khi đáp ứng tần số lọc thiết kế hiển thị Trở cửa sổ SPTool, cột Filters xuất thêm dịng filt-x [design] Đây lọc vừa thiết kế Thay đổi tên lọc thành bs2700 cách chọn Edit  Name…filt2 [design] Trong cửa sổ xuất hiện, nhập tên Ghi lại kết kiểm tra xem có phải lọc chắn dải mong muốn không? Bộ lọc chắn dải yêu cầu Khi thiết kế lọc FIR trên, kết mà ta cần nhận sau thiết kế giá trị h ( n) vector đáp ứng xung thực sau: lọc thiết kế Để lấy giá trị vector đáp ứng xung, ta Từ cửa sổ SPTool, chọn File  Export… Trong Export list xuất hiện, chọn Filter: bs2700 [design] nhấn nút Export to workspace Đóng cửa sổ SPTool lại Một thơng báo xuất hỏi có muốn lưu lại phiên làm việc hay không Nếu muốn lưu lại, chọn Save Mở cửa sổ Workspace MATLAB, ta thấy workspace xuất biến bs2700 Đây lọc mà ta thiết kế SPTool xuất workspace MATLAB Biến lưu dạng cấu trúc mô tả lọc thiết kế Nhấn đúp chuột vào tên biến bs2700 workspace, ta thấy field cấu trúc Trong field này, field tf thể hàm truyền lọc Field cấu trúc gồm field: tf.num tf.den thể tương ứng hệ số đa thức tử số đa thức mẫu số Đối với lọc FIR, hàm truyền có tử số hệ số tử số đáp ứng xung lọc Do đó, với lọc trên, giá trị vector đáp ứng xung lưu bs2700.tf.num Trong cửa sổ Array Editor trên, nhấn đúp vào field tf nhấn đúp vào num, ta thấy hệ số đáp ứng xung lọc Để gán hệ số vào vector h, MATLAB dùng lệnh sau: >> h = bs2700.tf.num Thực ghi nhận lại: Tổng số giá trị là: …… Ghi nhận lại giá trị đáp ứng xung lọc vào bảng sau: (Ghi chú: thực tính h*1e6 Matlab làm tròn giá trị đến hàng đơn vị, ví dụ giá trị -6 0.001793957 làm trịn thành 1793.10 , ghi nhận vào bảng 1793 đơn vị bảng ×10 −6 Đơn vị -1747 1689 702 -3432 3149 710 -4377 3767 331 - 2977 1669 -1.727*10- 2202 -5195 -36773 10685 11 766 11622 -18130 3986 24227 ) ×10 −6 37503 - 58645 20836 48201 -79522 32970 53484 -94608 44387 52002 901035 52002 44387 -94608 53484 32970 -79522 48201 20836 -58645 37503 10685 -36773 24227 3986 -18130 11622 766 -5195 2202 -1.727*10- 1669 - 2977 331 3767 -3432 702 1689 -1747 11 -4377 710 3149  Thực lọc Matlab y (n ) = h ( n ) ∗ x ( n ) Để thực việc tính tốn ngõ lọc, ta sử dụng định nghĩa h ( n) x ( n) với đáp ứng xung vừa tìm sử dụng công cụ sptool ngõ vào Do sử dụng giải thuật xử lý mẫu để thực lọc mẫu tín hiệu Chương trình Matlab thực giải thuật xử lý mẫu cho lọc sau: % Matlab code xn = []; hn = bs2700.tf.num; Lx = length(xn); N = length(hn); M = N - 1; Ly = Lx + M; yn = zeros(1, Ly); for n = : Ly-1 for i = max(0,n-Lx + 1):min(n,M) wi(n+1)= xn(n-i+1); yn(n+1)=yn(n+1)+hn(i+1)*wi(n+1); end end  Đánh giá kết thực Sử dụng chương trình vẽ đồ thị Matlab để vẽ đồ thị giá trị đáp ứng xung lọc Chương trình Matlab vẽ đồ thị đáp ứng xung lọc clc; close all; h = bs2700.tf.num; w=0:pi/20:pi; [H_matlab, w] = freqz(h); H_manitude = abs(H_matlab); figure(1) subplot(1,1,1); semilogy(w,H_manitude); ylabel ('Magnitude'); xlabel ('omega'); title('Dap ung bien do'); Ghi nhận dạng sóng đáp ứng xung lọc: Sử dụng chương trình Matlab tính FFT đáp ứng xung vẽ đồ thị đáp ứng biên pha miền tần số lọc Chương trình Matlab tính FFT vẽ đồ thị đáp ứng tần số lọc clc; close all; Fs=8000; h = bs2700.tf.num; L=length(h); H_pho=fft(h,L); H_pho_mag=abs(H_pho); H_pho_pha=angle(H_pho); figure(2) subplot(2,1,1); stem((0:L/2-1)*Fs/L, H_pho_mag(1:L/2)/L); ylabel ('Magnitude'); xlabel ('frequence'); title('Dap ung bien do-tan so'); subplot(2,1,2); stem((0:L/2-1)*Fs/L, H_pho_pha(1:L/2)); ylabel ('Phase'); xlabel ('frequence'); title('Dap ung pha-tan so'); Ghi nhận đáp ứng biên độ-tần số pha-tần số lọc:  Kiểm tra lọc: x ( t ) = x1 ( t ) + x ( t ) Tạo mẫu tín hiệu sine đa tần có phương trình x1 ( t ) = cos ( 2000π t ) với x ( t ) = cos ( 5400π t ) từ chương trình Matlab lưu vào biến giá trị xn, xn1, xn2 với thông số sau: tần số lấy mẫu fs = 8000 Hz, khoảng thời gian lấy mẫu t = đến t = 0.05 s Sau xác định ngõ yn đưa xn qua lọc Thực yêu cầu sau: Chương trình Matlab thực giải thuật xử lý mẫu cho lọc sau: % Matlab code clc; Fs = 8000; % Sampling frequency kHz Ts = 1/Fs; % Sampling period T_sim = 0.05; % Signal duration in seconds 50 ms t = : Ts : T_sim-Ts; xn1 = cos(2000*pi*t); xn2 = cos(5400*pi*t); xn = xn1 + xn2; Lx=length(xn); Xk=fft(xn,Lx); Xk_mag=abs(Xk); hn = bs2700.tf.num; yn=conv(xn,hn); Ly=length(yn); Yk=fft(yn,Ly); Yk_mag=abs(Yk); % plot the magnitude response figure(1) subplot(3,1,1); plot(t,xn1,'b-'); hold on; ylabel ('Amplitude'); xlabel ('xn1(n)'); subplot(3,1,2); plot(t,xn2,'b-'); hold on; ylabel ('Amplitude'); xlabel ('xn2(n)'); subplot(3,1,3); plot(t,xn,'b-'); hold on; ylabel ('Amplitude'); xlabel ('xn(n)'); figure(2) subplot(1,1,1); stem(0:Ts:(Ly-1)/Fs,yn,'r-'); hold on; ylabel ('Amplitude'); xlabel ('y(n)'); figure(3) subplot(2,1,1); stem((0:Lx/2-1)*Fs/Lx,Xk_mag(1:Lx/2)/Lx); xlabel('Hz'); ylabel('Amp'); title('X(k)'); subplot(2,1,2); stem((0:Ly/2-1)*Fs/Ly,Yk_mag(1:Ly/2)/Ly); xlabel('Hz'); ylabel('Amp'); title('Y(k)'); Vẽ đồ thị dạng sóng ngõ vào (x, x1, x2) ngõ (y) lọc Nhận xét Ngõ vào x(n), x1(n), x2(n): Ngõ y(n): Thực tính phổ ngõ vào (x) ngõ (y) lọc, sau vẽ đồ thị phổ biên độ ngõ vào ngõ Nhận xét Nhận xét: ngõ có xung tần số 1700Hz nằm lọc thông dải Kiểm tra lọc với ngõ vào tín hiệu tổng tín hiệu sine tần số từ 100 – 3900 Hz: Chương trình Matlab thực yêu cầu: % Matlab code clc; Fs = 8000; % Sampling frequency kHz Ts = 1/Fs; % Sampling period T_sim = 0.05; % Signal duration in seconds 50 ms t = : Ts : T_sim-Ts ; xn=0; for fo=100:100:3900 xn=xn+sin(2*pi*fo*t); end Lx=length(xn); Xk=fft(xn,Lx); Xk_mag=abs(Xk); hn = bp1750.tf.num; yn=conv(xn,hn); Ly=length(yn); Yk=fft(yn,Ly); Yk_mag=abs(Yk); %plot subplot(2,1,1); stem((0:Lx/2-1)*Fs/Lx,Xk_mag(1:Lx/2)/Lx); xlabel('Hz'); ylabel('Amp'); title('X(k)'); subplot(2,1,2); stem((0:Ly/2-1)*Fs/Ly,Yk_mag(1:Ly/2)/Ly); xlabel('Hz'); ylabel('Amp'); title('Y(k)'); Phổ tín hiệu ngõ vào ngõ ra: Nhận xét/Giải thích: Ngõ lấy tín hiệu thơng dải từ 1500Hz-2000Hz Lưu chương trình Matlab mục với tên Bai_3_FIR_bp_1500_2000_NHOMx.m 1.1.3 Bộ lọc FIR thông cao Tương tự trên, thiết kế, thực kiểm tra lọc FIR thông cao phương pháp Kaiser Window với thông số sau:: • Chiều dài đáp ứng xung: 63 • Tần số cắt: 2200 Hz • Giá trị β = • Tần số lấy mẫu: kHz Đáp ứng tần số lọc thiết kế dùng SPTool MATLAB: Giá trị hệ số đáp ứng xung lọc thực kit DSP: >> cof = round(h*2^15) -39 59 -35 -74 78 76 -136 -55 202 -267 96 314 -235 -322 417 266 -633 -119 869 -157 -1105 620 1319 -1412 -1491 3051 1602 -10295 14762 -10295 1602 3051 -1491 -1412 1319 620 -1105 -157 869 -119 -633 266 417 -322 -235 314 96 -267 202 -55 -136 76 78 -74 -35 59 -39 Đáp ứng biên độ-tần số pha-tần số lọc thực Matlab: Kiểm tra lọc với ngõ vào tín hiệu sin đa tần có thành phần tần số 1000 Hz 2500 Hz: Nhận xét: ngõ có xung tần số 2500Hz nằm lọc thơng cao có tần số cắt 2200Hz Kiểm tra lọc với ngõ vào tín hiệu tổng tín hiệu sin tần số 100 – 3900 Hz: Chương trình Matlab thực yêu cầu: % Matlab code clc; Fs = 8000; % Sampling frequency kHz Ts = 1/Fs; % Sampling period T_sim = 0.05; % Signal duration in seconds 50 ms t = : Ts : T_sim-Ts ; xn=0; for fo=100:100:3900 xn=xn+sin(2*pi*fo*t); end Lx=length(xn); Xk=fft(xn,Lx); Xk_mag=abs(Xk); hn = hp2200.tf.num; yn=conv(xn,hn); Ly=length(yn); Yk=fft(yn,Ly); Yk_mag=abs(Yk); %plot subplot(2,1,1); stem((0:Lx/2-1)*Fs/Lx,Xk_mag(1:Lx/2)/Lx); xlabel('Hz'); ylabel('Amp'); title('X(k)'); subplot(2,1,2); stem((0:Ly/2-1)*Fs/Ly,Yk_mag(1:Ly/2)/Ly); xlabel('Hz'); ylabel('Amp'); title('Y(k)'); Phổ tín hiệu ngõ vào ngõ ra: Nhận xét/Giải thích: Ngõ lấy tín hiệu từ sau tần số cắt 2200Hz Lưu chương trình Matlab mục với tên Bai_3_FIR_hp_2700_2900_NHOMx.m 1.1.4 Bộ lọc FIR multiband Thiết kế, thực kiểm tra lọc FIR multiband gồm 63 hệ số, tần số lấy mẫu 10 kHz, dải thông [500 1000] Hz [1500 2000] Hz, độ rộng dải chuyển tiếp 100 Hz Bộ lọc cần thiết kế có đáp ứng tần số sau: 1.2 0.8 0.6 0.4 0.2 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Hình Đáp ứng tần số lọc multiband FIR cần thiết kế  Thiết kế lọc dùng MATLAB Bộ lọc mong muốn có dải thơng, biểu diễn dải sau: Dải Tần số (Hz) Tần số chuẩn hóa f/FN Biên độ – 500 – 0.1 600 – 900 0.12 – 0.18 1000 – 1500 0.2 – 0.3 1600 – 1900 0.32 – 0.38 2000 - 5000 0.4 - FN tần số Nyquist, ½ tần số lấy mẫu Chúng ta viết file m để thiết kế lọc này, lưu lại với tên multibandfir63.m Nội dung file sau: %multibandfir63.m: Multiband FIR filter with 63 coefficients f = [0 0.1 0.12 0.18 0.2 0.3 0.32 0.38 0.4 1]; m = [0 1 0 1 0]; n = 63; cof = remez(n-1,f,m); % frequency response with 256 points [h w] = freqz(cof,1,256); % plot magnitude of the filter plot(5000*f,m); figure; plot(w/pi,abs(h)); Trong đoạn chương trình trên, có số lưu ý: Dòng lệnh cof = remez(n-1,f,m) trả vector hệ số lọc FIR bậc n – 1, với f m xác định dải tần số theo bảng - Lệnh freqz để tính đáp ứng tần số lọc - Lệnh plot thứ vẽ đáp ứng tần số mong muốn dựa f m - Lệnh figure tạo cửa sổ lệnh plot thứ hai vẽ đáp ứng tần số lọc thiết kế lên cửa sổ Ở đây, kết trình thiết kế mà ta cần nhận hệ số chứa biến cof Chúng sử dụng để viết chương trình Matlab cho lọc cần thực - Đáp ứng tần số lọc thiết kế dùng MATLAB: Gía trị hệ số đáp ứng xung lọc thực kit DSP: Đưa định dạng 16 bit có dấu thực kit DSP: cof = round(cof*2^15) 2063 -1245 -762 -397 -239 -249 -216 -9 137 -199 -1027 -166 -1345 -158 845 778 56 48 1384 2872 2566 20 -2867 -3665 -2015 -69 -38 -1575 -2139 29 3598 5351 3598 29 -2139 -1575 -38 -69 -2015 -3665 -2867 20 2566 2872 1384 48 56 778 845 -158 -1345 -1666 -1027 -199 137 -9 -216 -249 -239 -397 -762 -1245 2063 Dạng sóng đáp ứng xung lọc: Đáp ứng biên độ-tần số pha-tần số lọc: Kiểm tra lọc với ngõ vào tín hiệu sin đa tần có thành phần tần số 500 Hz, 750 Hz 1750 Hz: - Xung tính hiệu x(n), y(n): - Xung tần số X(k), Y(k): Nhận xét: Ngõ có xung tần số 750Hz 1750Hz Xung 500Hz bị giảm biên độ Kiểm tra lọc với ngõ vào tín hiệu tổng tín hiệu sine tần số từ 100 – 3900 Hz: Chương trình Matlab thực yêu cầu: Phổ tín hiệu ngõ vào ngõ ra: Nhận xét/Giải thích: Bộ lọc thông dải tần số 500Hz-1000Hz 1500Hz-2000Hz cịn lại chắn dải Bộ lọc khơng lý tưởng Lưu chương trình Matlab mục với tên Bai_3_FIR_mb_NHOMx.m ... - 437 7 37 67 33 1 - 2977 1669 -1.727*10- 2202 -5195 -36 7 73 10685 11 766 11622 -18 130 39 86 24227 ) ×10 −6 37 5 03 - 58645 20 836 48201 -79522 32 970 534 84 -94608 4 438 7 52002 901 035 52002 4 438 7 -94608 534 84... 4 438 7 -94608 534 84 32 970 -79522 48201 20 836 -58645 37 5 03 10685 -36 7 73 24227 39 86 -18 130 11622 766 -5195 2202 -1.727*10- 1669 - 2977 33 1 37 67 -34 32 702 1689 -1747 11 - 437 7 710 31 49  Thực lọc Matlab... 20 -2867 -36 65 -2015 -69 -38 -1575 -2 139 29 35 98 535 1 35 98 29 -2 139 -1575 -38 -69 -2015 -36 65 -2867 20 2566 2872 138 4 48 56 778 845 -158 - 134 5 -1666 -1027 -199 137 -9 -216 -249 - 239 -39 7 -762

Ngày đăng: 10/03/2022, 11:06

TỪ KHÓA LIÊN QUAN

w