matlab 巴特沃斯濾波
阿新 • • 發佈:2018-11-20
低通濾波
fs=30; %取樣頻率 N=300; %N/fs 秒資料 n=0:N-1; t=n/fs; %時間 if 0 fl = 0.4; %低頻 fh = 5; %高頻 s=cos(2*pi*fl*t)+cos(2*pi*fh*t); %s是0.4Hz和5Hz訊號疊加,低通截止頻率是1Hz subplot(121);plot(t,s); title('輸入訊號');xlabel('t/s');ylabel('幅度'); sfft=fft(s); subplot(122); plot((1:length(sfft)/2)*fs/length(sfft),2*abs(sfft(1:length(sfft)/2))/length(sfft)); title('訊號頻譜');xlabel('頻率/Hz');ylabel('幅度'); %設計低通濾波器,截止頻率為1 if 0 Wp=1/fs;Ws=2/fs; %截止頻率為1Hz,阻帶截止頻率為2Hz %估算得到Butterworth低通濾波器的最小階數N和3dB截止頻率Wn [n,Wn]=buttord(Wp,Ws,1,50); %阻帶衰減大於50db,通帶紋波小於1db else n=4; Wn=1/(fs/2); end %設計Butterworth低通濾波器 [a,b]=butter(n,Wn); [h,f]=freqz(a,b,'whole',fs); %求數字低通濾波器的頻率響應 f=(0:length(f)-1*fs/length(f)); %進行對應的頻率轉換 figure; plot(f(1:length(f)/2),abs(h(1:length(f)/2))); %繪製幅頻響應圖 title('巴特沃斯低通濾波器');xlabel('頻率/Hz');ylabel('幅度'); grid; sF=filter(a,b,s); %疊加函式s經過低通濾波器以後的新函式 figure; subplot(121); plot(t,sF); %繪製疊加函式s經過低通後時域圖形 title('輸出訊號');xlabel('t/s');ylabel('幅度'); SF=fft(sF); subplot(122); plot((1:length(SF)/2)*fs/length(SF),2*abs(SF(1:length(SF)/2))/length(SF)); title('低通濾波後頻譜');xlabel('頻率/Hz');ylabel('幅度'); end
帶通濾波
fl = 2; %低頻 fh = 10; %高頻 s=cos(2*pi*fl*t)+cos(2*pi*fh*t); %s是2Hz和3Hz訊號疊加,帶通截止頻率是1Hz~4Hz s=H; N=3636; %N/fs 秒資料 n=0:N-1; t=n/fs; %時間 subplot(121);plot(t,s); title('輸入訊號');xlabel('t/s');ylabel('幅度'); sfft=fft(s); subplot(122); plot((1:length(sfft)/2)*fs/length(sfft),2*abs(sfft(1:length(sfft)/2))/length(sfft)); title('訊號頻譜');xlabel('頻率/Hz');ylabel('幅度'); %設計帶通濾波器,截止頻率為0.4~5 n=4; Wn=[0.4/(fs/2) 5/(fs/2)] %設計Butterworth低通濾波器 [a,b]=butter(n,Wn); [h,f]=freqz(a,b,'whole',fs); %求數字低通濾波器的頻率響應 f=(0:length(f)-1*fs/length(f)); %進行對應的頻率轉換 figure; plot(f(1:length(f)/2),abs(h(1:length(f)/2))); %繪製幅頻響應圖 title('巴特沃斯帶通濾波器');xlabel('頻率/Hz');ylabel('幅度'); grid; sF=filter(a,b,s); %疊加函式s經過低通濾波器以後的新函式 figure; subplot(121); plot(t,sF); %繪製疊加函式s經過低通後時域圖形 title('輸出訊號');xlabel('t/s');ylabel('幅度'); SF=fft(sF); subplot(122); plot((1:length(SF)/2)*fs/length(SF),2*abs(SF(1:length(SF)/2))/length(SF)); title('帶通濾波後頻譜');xlabel('頻率/Hz');ylabel('幅度');