DSP_EX06close all;clear all;wn=025;N1=15;N2=33;window1=hanningN1+1;window2=hanningN2+1;b1=fir1N1wnwindow1;b2=fir1N2wnwindow2;H1W1=freqzb115122;H2W2=freqzb215122;figuresubplot211plotW120logabsH1r+;hold
%% 设计不同长度的FIR滤波器,并比较其频率响应
% 清空工作区和命令窗口中的变量 close all; clear all;
% 设定截止频率和滤波器长度 wn = 0.25; N1 = 15; N2 = 33;
% 分别采用汉宁窗和矩形窗设计FIR滤波器 window1 = hanning(N1+1); window2 = hanning(N2+1); b1 = fir1(N1, wn, window1); b2 = fir1(N2, wn, window2);
% 计算频率响应 [H1, W1] = freqz(b1, 1, 512, 2); [H2, W2] = freqz(b2, 1, 512, 2);
% 绘制幅度响应和相位响应 figure subplot(2,1,1) plot(W1, 20log(abs(H1)), 'r+'); hold on plot(W2, 20log(abs(H2)), 'b'); hold off; xlabel('归一化频率'); ylabel('幅度/dB'); legend('N1=15', 'N2=33') subplot(2,1,2) plot(W1, angle(H1), 'r+'); hold on plot(W2, angle(H2), 'b'); hold off; xlabel('归一化频率'); ylabel('相频/degree'); legend('N1=15', 'N2=33')
% 对于N2=33的滤波器,采用不同窗函数设计并比较频率响应 win1 = triang(N2+1); win2 = hanning(N2+1); win3 = hamming(N2+1); win4 = blackman(N2+1); win = [win1, win2, win3, win4]; figure for i=1:4 temp = fir1(N2, wn, win(:,i)); [H, W] = freqz(temp, 1, 512, 2); subplot(2,2,i) plot(W, 20log(abs(H))); hold on; plot(W, -3ones(size(W)), 'r-.'); % -3dB频率 hold on; plot(W, -20*ones(size(W)), 'k-.'); % -20dB频率 xlabel('归一化频率'); ylabel('幅度/dB'); grid on; legend('幅频响应', '-3dB', '-20dB') en
原文地址: https://www.cveoy.top/t/topic/fDNB 著作权归作者所有。请勿转载和采集!