1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo THÍ NGHIỆM xử lý số tín HIỆU bài 3 THIẾT kế và THỰC HIỆN các bộ lọc FIR TRÊN MATLAB

28 14 0

Đ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 28
Dung lượng 1,47 MB

Nội dung

ĐẠ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Ử NĂM HỌC 2021 – 2022 -* - BÁO CÁO THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU BÀI 3: THIẾT KẾ VÀ THỰC HIỆN CÁC BỘ LỌC FIR TRÊN MATLAB GVHD: Huỳnh Văn Phận Lớp L01 SV thực hiện: Nguyễn Ngọc Độ MSSV: 1913131 Ngày hoàn thành: 22/01/2022 CÁC THÍ NGHIỆM ĐÃ THỰC HIỆN: Thí nghiệm 1: 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 Bài làm: Thực Sptool: Kết quả: Đơn vị 10 −6 -1747 1688 701 -3432 3149 710 -4377 3766 330 -2976 1668 -1 2202 -5194 765 11622 -18129 3986 24227 -36772 10684 37503 -58645 20836 48200 -79522 32969 53484 -94607 44386 52001 901035 52001 44386 -94607 53484 32969 -79522 48200 20836 -58645 37503 10684 -36772 24227 3986 -18129 11622 765 -5194 2202 -1 1668 -2976 330 3766 -4377 710 3149 -3432 701 1688 -1747 Lưu ý: Theo yêu cầu file hướng dẫn tất code bên viết chương trình Matlap tách để làm báo cáo: Thực lọc Matlab Để thực việc tính tốn ngõ lọc, ta sử dụng định nghĩa với đáp ứng xung vừa tìm sử dụng cơng cụ sptool mẫu tín hiệu ngõ vào Do sử dụng giải thuật xử lý mẫu để thực lọc Chương trình Matlab thực giải thuật xử lý mẫu cho lọc sau: % Matlab code % Giai thuat xu li mau Lx = length(x) M = length(h) -1 Ly = Lx + M y = zeros(1,Ly); w = zeros(1,N) t1 = Lx+1:1:Ly xk = [x zeros(size(t1))]; u = 0; for i=1:Ly w(1,1) = xk(1,i) for i1 = 1:N %he thong co nho % Voi moi x: w1=x % Ngo u = u + h(1,i1)*w(1,i1); end y(1,i) = u; % Gan y()=u u = 0; for i2 = N:-1:2 % Cap nhat ghi w(1,i2)=w(1,i2-1); end end subplot(1,2,2); plot(0:1/Fs:(Ly-1)/Fs,y); xlabel('t(s)'); ylabel('y(t)') Đá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 ; clear all; % % % ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN h=[-0.00174709654564910 0.00168872519890469 0.000701884398853810 0.00343223263694093 0.00314913871171463 0.000710421482553483 0.00437746218412451 0.00376664077187595 0.000330778555278004 0.00297665906401290 0.00166872303004502 -1.72704974511081e-17 0.00220275641330311 -0.00519489780787680 0.000765675515476357 0.0116220248654656 -0.0181296946169379 0.00398607038409518 0.0242275361286390 -0.0367727368557663 0.0106849535445541 0.0375033940408382 -0.0586453988030088 0.0208364586476874 0.0482007192080624 -0.0795222381627791 0.0329698175224111 0.0534842680611123 -0.0946076338576162 0.0443868144711528 0.0520015574471277 0.901035384271123 0.0520015574471277 0.0443868144711528 -0.0946076338576162 0.0534842680611123 0.0329698175224111 -0.0795222381627791 0.0482007192080624 0.0208364586476874 -0.0586453988030088 0.0375033940408382 0.0106849535445541 -0.0367727368557663 0.0242275361286390 0.00398607038409518 -0.0181296946169379 0.0116220248654656 0.000765675515476357 -0.00519489780787680 0.00220275641330311 1.72704974511081e-17 0.00166872303004502 -0.00297665906401290 0.000330778555278004 0.00376664077187595 -0.00437746218412451 0.000710421482553483 0.00314913871171463 -0.00343223263694093 0.000701884398853810 0.00168872519890469 -0.00174709654564910]; Fs = 8000 N = length(h) figure(1); stem(h); 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: %% Dap ung tan so cua bo loc figure(2); m = [H_matlab, w] = freqz(h,m); H_matlab_manitude = abs(H_matlab); H_matlab_phase = angle(H_matlab); subplot(1,2,1) semilogy(w,H_matlab_manitude) xlabel("Frequency(radians)") ylabel("Magnitude(dB)") subplot(1,2,2) plot(w,H_matlab_phase) xlabel("Frequency(radians)") ylabel("Phase(degrees)") %% FFT figure(3); Hk = fft(h,N) Hk_magnitude = abs(Hk) Hk_phase = angle(Hk) subplot(1,2,1) stem((0:N/2-1)*Fs/N,Hk_magnitude(1:N/2)/N) xlabel("Frequency(Hz)") ylabel("Amplitude") subplot(1,2,2) stem((0:N/2-1)*Fs/N,Hk_phase(1:N/2)/N) xlabel("Frequency(Hz)") ylabel("Phase") Đáp ứng tần số: Ghi nhận đáp ứng biên độ-tần số pha-tần số lọc: Kiểm tra lọc: Tạo mẫu tín hiệu sine đa tần có phương trình x (t ) = x1 (t ) + x (t ) với x1 ( t ) = cos ( 2000 t ) 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: Vẽ đồ thị dạng sóng ngõ vào (x, x1, x2) ngõ (y) lọc Nhận xét Chương trình Matlap: %% Tao mau tin hieu mien thoi gian figure(4) Ts = 1/Fs t = : Ts : 0.05 - Ts xn1= cos(2000*pi*t) xn2= cos(5400*pi*t) xn = xn1 + xn2 x = xn1 + xn2 + xn subplot(1,2,1) plot(t,x) xlabel('t(s)') ylabel('x(t)') % Giai thuat xu li mau Lx = length(x) M = length(h) -1 Ly = Lx + M y = zeros(1,Ly); w = zeros(1,N) t1 = Lx+1:1:Ly xk = [x zeros(size(t1))]; u = 0; for i=1:Ly w(1,1) = xk(1,i) for i1 = 1:N u = u + h(1,i1)*w(1,i1); end y(1,i) = u; u = 0; for i2 = N:-1:2 w(1,i2)=w(1,i2-1); end end subplot(1,2,2); plot(0:1/Fs:(Ly-1)/Fs,y); xlabel('t(s)'); ylabel('y(t)') Ngõ vào xn ngõ yn: 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 Chương trình Matlap: %% Ve mien tan so figure(5) X_pho = fft(x,Lx); Y_pho = fft(y,Ly); X_magnitude = abs(X_pho); Y_magnitude = abs(Y_pho); subplot(1,2,1) stem((0:Lx/2-1)*Fs/Lx,X_magnitude(1:Lx/2)/Lx) xlabel("Frequency(Hz)") ylabel("Amplitude_X") subplot(1,2,2) stem((0:Ly/2-1)*Fs/Ly,Y_magnitude(1:Ly/2)/Ly) xlabel("Frequency(Hz)") ylabel("Amplitude_Y") Phổ miền tần số: Tạo mẫu tín hiệu x(n) tổng tín hiệu sine có tần số từ 100 Hz đến 3900 Hz có bước nhảy 100Hz tần số lấy mẫu fs = 8000 Hz, sau cho tín hiệu xn qua lọc để tính giá trị ngõ y(n) Dùng chương trình Matlab để vẽ phổ biên độ tín hiệu ngõ vào ngõ Giải thích có dạng phổ này? Chương trính Matlap: %% Tao mau tin hieu tu 100 >3900 va ve ngo vao, ngo figure(6) F=100:100:3900; xa=0; b=0; Lf=length(F); for i=1:Lf xa=xa+sin(2*pi*F(1,i)*t); end Lxa=length(xa); M=length(h)-1; k4=Lxa+M; k3=length(xa); k=length(h); ya=zeros(1,k4); xan=zeros(1,k4); t2=k3+1:1:k4; xan=[xa zeros(size(t2))]; w=zeros(1,k); for i=1:k4 w(1,1)=xan(1,i); for ii=1:k b=b+h(1,ii)*w(1,ii); end ya(1,i)=b; b=0; for e=k:-1:2 w(1,e)=w(1,e-1); end end Lya=length(ya); Ya=fft(ya,Lya); Xa=fft(xa,Lxa); Ya_mag=abs(Ya); Xa_mag=abs(Xa); subplot(1,2,1); stem((0:Lxa/2-1)*Fs/Lxa,Xa_mag(1:Lxa/2)/Lxa); xlabel('Hz'); ylabel('Amp'); subplot(1,2,2); stem((0:Lya/2-1)*Fs/Lya,Ya_mag(1:Lya/2)/Lya); xlabel('Hz'); ylabel('Amp'); Phổ tín hiệu ngõ vào ngõ ra: Nhận xét: -Bộ lọc nhóm tạo đáp ứng với yêu cầu đề -Ở phổ ngõ lọc chắn dải có fc1=2500 fc2=2900 nên phôt ngõ vùng tần số có giá trị = Thí nghiệm 2: Thiết kế, thực kiểm tra lọc FIR thông dải 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: 1500 2000 Hz • Giá trị  = • Tần số lấy mẫu: kHz Đáp ứng tần số lọc thiết kế công cụ SPTool Matlab: Kết quả: Kết quả: 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 Matlap: %% Tao mau tin hieu tu 100 >3900 va ve ngo vao, ngo figure(4); F=100:100:3900; xa=0; b=0; Lf=length(F); for i=1:Lf xa=xa+sin(2*pi*F(1,i)*t); end Lxa=length(xa); M=length(h)-1; k4=Lxa+M; k3=length(xa); k=length(h); ya=zeros(1,k4); xan=zeros(1,k4); t2=k3+1:1:k4; xan=[xa zeros(size(t2))]; w=zeros(1,k); for i=1:k4 w(1,1)=xan(1,i); for ii=1:k b=b+h(1,ii)*w(1,ii); end ya(1,i)=b; b=0; for e=k:-1:2 w(1,e)=w(1,e-1); end end Lya=length(ya); Ya=fft(ya,Lya); Xa=fft(xa,Lxa); Ya_mag=abs(Ya); Xa_mag=abs(Xa); subplot(1,2,1); stem((0:Lxa/2-1)*Fs/Lxa,Xa_mag(1:Lxa/2)/Lxa); xlabel('Hz'); ylabel('Amp'); subplot(1,2,2); stem((0:Lya/2-1)*Fs/Lya,Ya_mag(1:Lya/2)/Lya); xlabel('Hz'); ylabel('Amp'); Kết quả: Nhận xét: -Bộ lọc nhóm tạo đáp ứng với yêu cầu đề -Ở phổ ngõ lọc chắn dải có fc1=1500 fc2=2000 nên phổ ngõ vùng tần số có giá trị = Thí nghiệm 3: 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: Thiết kế Sptool: • 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: Gía trị hệ số đáp ứng xung lọc : Đơn vị 10 −6 142 -1194 238 1804 -1055 -2270 2368 2327 -4136 -1670 6178 -5 -8155 2915 9576 -7182 -9811 12739 8116 -19331 -3624 26518 -4776 -33713 18907 40255 -43075 -45494 93123 48883 -314117 450503 -314117 48883 93123 -45494 -43705 40255 18907 -33713 -4776 26518 -3624 -19331 8116 12739 -9811 -7182 9576 2915 -8155 -5 6178 -1670 -4136 2327 2368 -2270 -1055 1804 238 -1194 142 Đáp ứng biên độ-tần số pha-tần số lọc thực Matlab: Chương trình Matlap: clc ; clear all; h=[0.000142283305243643 -0.00119407064966920 0.000238094241548619 0.00180437346965779 -0.00105503823230635 -0.00227059504648955 0.00236898929825931 0.00232783717916770 -0.00413698749921849 0.00167033758173271 0.00617820053213875 -5.29289580547185e-17 0.00815538025173265 0.00291509133399347 0.00957616503682162 -0.00718257546114980 -0.00981140458140240 0.0127399746366815 0.00811681517718264 0.0193319503098689 -0.00362456540468375 0.0265180516736463 0.00477607330848616 -0.0337130144049365 0.0189073657296987 0.0402554521969857 0.0430757576238980 -0.0454949731715578 0.0931230506131574 0.0488836082271227 0.314177280837310 0.450503208206324 -0.314177280837310 0.0488836082271227 0.0931230506131574 -0.0454949731715578 -0.0430757576238980 0.0402554521969857 0.0189073657296987 -0.0337130144049365 0.00477607330848616 0.0265180516736463 -0.00362456540468375 0.0193319503098689 0.00811681517718264 0.0127399746366815 -0.00981140458140240 -0.00718257546114980 0.00957616503682162 0.00291509133399347 0.00815538025173265 -5.29289580547185e-17 0.00617820053213875 0.00167033758173271 -0.00413698749921849 0.00232783717916770 0.00236898929825931 -0.00227059504648955 -0.00105503823230635 0.00180437346965779 0.000238094241548619 -0.00119407064966920 0.000142283305243643]; Fs = 8000 N = length(h) %% Câu % % % biên độ-tần số pha-tần số figure(1); Hk = fft(h,N) Hk_magnitude = abs(Hk) Hk_phase = angle(Hk) subplot(1,2,1) stem((0:N/2-1)*Fs/N,Hk_magnitude(1:N/2)/N) xlabel("Frequency(Hz)") ylabel("Amplitude") subplot(1,2,2) stem((0:N/2-1)*Fs/N,Hk_phase(1:N/2)/N) xlabel("Frequency(Hz)") ylabel("Phase") Kết quả: 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: Chương trình Matlap: %% Tao mau tin hieu mien thoi gian figure(2) Ts = 1/Fs t = : Ts : 0.05 - Ts xn1= cos(2000*pi*t) xn2= cos(5000*pi*t) xn = xn1 + xn2 x = xn1 + xn2 + xn subplot(1,2,1) plot(t,x) xlabel('t(s)') ylabel('x(t)') % Giai thuat xu li mau Lx = length(x) M = length(h) -1 Ly = Lx + M y = zeros(1,Ly); w = zeros(1,N) t1 = Lx+1:1:Ly xk = [x zeros(size(t1))]; u = 0; for i=1:Ly w(1,1) = xk(1,i) for i1 = 1:N u = u + h(1,i1)*w(1,i1); end y(1,i) = u; u = 0; for i2 = N:-1:2 w(1,i2)=w(1,i2-1); end end subplot(1,2,2); plot(0:1/Fs:(Ly-1)/Fs,y); xlabel('t(s)'); ylabel('y(t)') %% Ve mien tan so figure(3); X_pho = fft(x,Lx); Y_pho = fft(y,Ly); X_magnitude = abs(X_pho); Y_magnitude = abs(Y_pho); subplot(1,2,1) stem((0:Lx/2-1)*Fs/Lx,X_magnitude(1:Lx/2)/Lx) xlabel("Frequency(Hz)") ylabel("Amplitude_X") subplot(1,2,2) stem((0:Ly/2-1)*Fs/Ly,Y_magnitude(1:Ly/2)/Ly) xlabel("Frequency(Hz)") ylabel("Amplitude_Y") Trong miền thời gian: Trong miền tần số: 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 Matlap: %% Tao mau tin hieu tu 100 >3900 va ve ngo vao, ngo figure(4); F=100:100:3900; xa=0; b=0; Lf=length(F); for i=1:Lf xa=xa+sin(2*pi*F(1,i)*t); end Lxa=length(xa); M=length(h)-1; k4=Lxa+M; k3=length(xa); k=length(h); ya=zeros(1,k4); xan=zeros(1,k4); t2=k3+1:1:k4; xan=[xa zeros(size(t2))]; w=zeros(1,k); for i=1:k4 w(1,1)=xan(1,i); for ii=1:k b=b+h(1,ii)*w(1,ii); end ya(1,i)=b; b=0; for e=k:-1:2 w(1,e)=w(1,e-1); end end Lya=length(ya); Ya=fft(ya,Lya); Xa=fft(xa,Lxa); Ya_mag=abs(Ya); Xa_mag=abs(Xa); subplot(1,2,1); stem((0:Lxa/2-1)*Fs/Lxa,Xa_mag(1:Lxa/2)/Lxa); xlabel('Hz'); ylabel('Amp'); subplot(1,2,2); stem((0:Lya/2-1)*Fs/Lya,Ya_mag(1:Lya/2)/Lya); xlabel('Hz'); ylabel('Amp'); Kết quả: Thí nghiệm 4: 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 Đáp ứng tần số lọc thiết kế dùng MATLAB: Chương trình Matlap: %multibandfir63.m: Multiband FIR filter with 63 coefficients 4500 5000 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)); Kết quả: Giá trị hệ số đáp ứng xung lọc 0.0629 -0.0379 -0.0232 -0.0121 -0.0072 -0.0075 -0.0065 -0.0002 0.0041 -0.0060 -0.0313 -0.0508 -0.0410 -0.0048 0.0257 0.0237 0.0017 0.0014 0.0422 0.0876 0.0782 0.0006 -0.0874 -0.1118 -0.0614 -0.0021 -0.0011 -0.0480 -0.0652 0.0008 0.1097 0.1633 0.1097 0.0008 -0.0652 -0.0480 -0.0011 -0.0021 -0.0614 -0.1118 -0.0874 0.0006 0.0782 0.0876 0.0422 0.0014 0.0017 0.0237 0.0257 -0.0048 -0.0410 -0.0508 -0.0313 -0.0060 0.0041 -0.0002 -0.0065 -0.0075 -0.0072 -0.0121 -0.0232 -0.0379 0.0629 Dạng sóng đáp ứng xung lọc: Chương trình Matlap: clc ; clear all; h=[0.0629464001857862 -0.0379895774715976 -0.0232455837205856 0.0121084542071797 -0.00728192875634709 -0.00758870757876416 0.00658151214389935 -0.000288584120480023 0.00416699727409253 0.00607547500688878 -0.0313457094276908 -0.0508507421030569 -0.0410553516196983 0.00481914395177860 0.0257724255350128 0.0237347384932835 0.00171060290297974 0.00147466748429707 0.0422351629513489 0.0876389862456108 0.0782978474687119 0.000603435671365441 -0.0874874725925719 0.111837915704097 -0.0614899870756429 -0.00210250060447118 0.00115779547789171 -0.0480739396381892 -0.0652779198236848 0.000877083092475094 0.109793824320079 0.163301921091584 0.109793824320079 0.000877083092475094 -0.0652779198236848 -0.0480739396381892 0.00115779547789171 -0.00210250060447118 -0.0614899870756429 0.111837915704097 -0.0874874725925719 0.000603435671365441 0.0782978474687119 0.0876389862456108 0.0422351629513489 0.00147466748429707 0.00171060290297974 0.0237347384932835 0.0257724255350128 -0.00481914395177860 -0.0410553516196983 0.0508507421030569 -0.0313457094276908 -0.00607547500688878 0.00416699727409253 -0.000288584120480023 -0.00658151214389935 0.00758870757876416 -0.00728192875634709 -0.0121084542071797 0.0232455837205856 -0.0379895774715976 0.0629464001857862]; Fs = 10000 N = length(h) figure(1); stem(h); Đáp ứng biên độ-tần số pha-tần số lọc Chương trình Matlap: figure(2); Hk = fft(h,N) Hk_magnitude = abs(Hk) Hk_phase = angle(Hk) subplot(1,2,1) stem((0:N/2-1)*Fs/N,Hk_magnitude(1:N/2)/N) xlabel("Frequency(Hz)") ylabel("Amplitude") subplot(1,2,2) stem((0:N/2-1)*Fs/N,Hk_phase(1:N/2)/N) xlabel("Frequency(Hz)") ylabel("Phase") 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: Chương trình Matlap: %% Dap ung tan so cua bo loc figure(2); Hk = fft(h,N) Hk_magnitude = abs(Hk) Hk_phase = angle(Hk) subplot(1,2,1) stem((0:N/2-1)*Fs/N,Hk_magnitude(1:N/2)/N) xlabel("Frequency(Hz)") ylabel("Amplitude") subplot(1,2,2) stem((0:N/2-1)*Fs/N,Hk_phase(1:N/2)/N) xlabel("Frequency(Hz)") ylabel("Phase") %% Tao mau tin hieu mien thoi gian figure(3) Ts = 1/Fs t = : Ts : 0.05 - Ts xn1= cos(1000*pi*t) xn2= cos(1500*pi*t) xn3= cos(3500*pi*t) xn = xn1 + xn2 + xn3 x = xn1 + xn2 + xn3 + xn subplot(1,2,1) plot(t,x) xlabel('t(s)') ylabel('x(t)') % Giai thuat xu li mau Lx = length(x) M = length(h) -1 Ly = Lx + M y = zeros(1,Ly); w = zeros(1,N) t1 = Lx+1:1:Ly xk = [x zeros(size(t1))]; u = 0; for i=1:Ly w(1,1) = xk(1,i) for i1 = 1:N u = u + h(1,i1)*w(1,i1); end y(1,i) = u; u = 0; for i2 = N:-1:2 w(1,i2)=w(1,i2-1); end end subplot(1,2,2); plot(0:1/Fs:(Ly-1)/Fs,y); xlabel('t(s)'); ylabel('y(t)') %% Ve mien tan so figure(4); X_pho = fft(x,Lx); Y_pho = fft(y,Ly); X_magnitude = abs(X_pho); Y_magnitude = abs(Y_pho); subplot(1,2,1) stem((0:Lx/2-1)*Fs/Lx,X_magnitude(1:Lx/2)/Lx) xlabel("Frequency(Hz)") ylabel("Amplitude_X") subplot(1,2,2) stem((0:Ly/2-1)*Fs/Ly,Y_magnitude(1:Ly/2)/Ly) xlabel("Frequency(Hz)") ylabel("Amplitude_Y") Kết quả: 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 Matlap: %% Tao mau tin hieu tu 100 >3900 va ve ngo vao, ngo figure(5); F=100:100:3900; xa=0; b=0; Lf=length(F); for i=1:Lf xa=xa+sin(2*pi*F(1,i)*t); end Lxa=length(xa); M=length(h)-1; k4=Lxa+M; k3=length(xa); k=length(h); ya=zeros(1,k4); xan=zeros(1,k4); t2=k3+1:1:k4; xan=[xa zeros(size(t2))]; w=zeros(1,k); for i=1:k4 w(1,1)=xan(1,i); for ii=1:k b=b+h(1,ii)*w(1,ii); end ya(1,i)=b; b=0; for e=k:-1:2 w(1,e)=w(1,e-1); end end Lya=length(ya); Ya=fft(ya,Lya); Xa=fft(xa,Lxa); Ya_mag=abs(Ya); Xa_mag=abs(Xa); subplot(1,2,1); stem((0:Lxa/2-1)*Fs/Lxa,Xa_mag(1:Lxa/2)/Lxa); xlabel('Hz'); ylabel('Amp'); subplot(1,2,2); stem((0:Lya/2-1)*Fs/Lya,Ya_mag(1:Lya/2)/Lya); xlabel('Hz'); ylabel('Amp'); Phổ tín hiệu ngõ vào ngõ ra: ... 238 1804 -1055 -2270 236 8 232 7 -4 136 -1670 6178 -5 -8155 2915 9576 -7182 -9811 12 739 8116 -1 933 1 -36 24 26518 -4776 -33 7 13 18907 40255 - 430 75 -45494 931 23 488 83 -31 4117 4505 03 -31 4117 488 83 931 23. .. -0.0454949 731 715578 0.0 931 230 506 131 574 0.0488 836 082271227 0 .31 4177280 837 310 0.4505 032 0820 632 4 -0 .31 4177280 837 310 0.0488 836 082271227 0.0 931 230 506 131 574 -0.0454949 731 715578 -0.0 430 757576 238 980 0.0402554521969857... 0.012 739 974 636 6815 0.00811681517718264 0.01 933 195 030 98689 -0.0 036 245654046 837 5 0.0265180516 736 4 63 0.0047760 733 0848616 -0. 033 7 130 14404 936 5 0.01890 736 57296987 0.0402554521969857 0.0 430 757576 238 980

Ngày đăng: 02/08/2022, 04:34

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w