解释代码%FIR滤波器窗函数设计法 N=21;a=(N-1)/2;Wc=pi/4; n=[0:1:(N-1)]; m=n-a+eps; hd=sin(Wc*m)./(pi*m); %矩形窗 [H1,W]=freqz(hd,1); figure(1); subplot(211);stem(n,hd); xlabel('n');ylabel('hr(n)'); title('实际脉冲响应'); subplot(212); plot(W/pi,20*log10(abs(H1)/max(H1))); xlabel('频率');ylabel('幅频响应'); title('加矩形窗时的频谱图'); %汉宁窗 W_han=(hanning(N))';h2=hd.*W_han; [H2,W]=freqz(h2,1); figure(2); subplot (211);stem(n,h2); xlabel('n');ylabel('hhn(n)'); title('汉宁窗实际脉冲响应'); subplot(212); plot (W/pi,20*log10(abs(H2)/max(H2))); xlabel('频率');ylabel('幅频响应'); title('加汉宁窗时的频谱图'); %汉明窗 W_han=(hamming(N))';h3=hd.*W_han; [H3,W]=freqz (h3,1); figure(3);subplot (211); stem(n,h3);xlabel('n');ylabel('hhm(n)'); title('汉明窗实际脉冲响应'); subplot(212); plot (W/pi,20*log10(abs(H3)/max (H3))); xlabel('频率');ylabel('幅频响应'); title('加汉明窗时的频谱图'); %加Blackman窗 W_bla=(blackman(N))';h4=hd.*W_bla; [H4,W]=freqz(h4,1); figure(4); subplot(211);stem(n,h4); xlabel('n');ylabel('hbl(n)'); title('Blackman窗实际脉冲响应'); subplot (212); plot(W/pi,20*log10(abs(H4)/max (H4))); xlabel('频率');ylabel('幅频响应'); title('加Blackman窗时的频谱图');
时间: 2024-04-05 10:29:32 浏览: 131
这是一个用于设计FIR滤波器的窗函数法。代码中给出了不同种类的窗函数(矩形窗、汉宁窗、汉明窗、Blackman窗)和对应的滤波器实际脉冲响应以及加窗后的频谱图。其中,N表示滤波器的阶数,Wc表示滤波器的截止频率,n表示滤波器的时域序列,hd表示矩形窗下的理想滤波器脉冲响应,h2、h3、h4分别为加汉宁窗、汉明窗、Blackman窗后的滤波器脉冲响应。频谱图中,横坐标为频率(单位为π),纵坐标为幅度响应(单位为dB)。
相关问题
对以下代码进行分析;% 例1,设计一个带通滤波器,其参数为:ws1=0.2*pi;wp1=0.35*pi; wp2=0.65*pi;ws2=0.8*pi;Ap=-3dB, As=-75dB; % 根据阻带要求选择布莱克曼窗。 clear;clc; ws1=0.2*pi; wp1=0.35*pi; wp2=0.65*pi; ws2=0.8*pi; Ap=-3; As=-75; wd=min((wp1-ws1),(ws2-wp2)); wc1=(ws1+wp1)/2; wc2=(ws2+wp2)/2; % 计算窗口长度 N=ceil(11*pi/wd); % 计算窗口 w_bla=(blackman(N+1))'; hd=ideal_lp(wc2,N+1)-ideal_lp(wc1,N+1);%低通 h=hd.*w_bla; % 采用窗函数设计法完成低通滤波器的设计,参数为: wp1=0.35*pi; wp=0.35*pi;ws=0.8*pi;Ap=-3dB, As=-45dB; % 阻带要求是As % 采用窗函数设计法完成低通滤波器的设计 % 采用汉明窗以及ideal_lp函数 % 参数为:wp1=0.35pi; wp=0.35pi; ws=0.8*pi; Ap=-3dB, As=-45dB clear;clc; % 参数设置 wp1 = 0.35*pi; % 通带截止频率1 wp = 0.35*pi; % 通带截止频率2 ws = 0.8*pi; % 阻带截止频率 Ap = 3; % 通带最大衰减 As = 45; % 阻带最小衰减 % 计算滤波器阶数和截止频率 delta_w = ws - wp; delta_p = (10^(Ap/20)-1)/(10^(Ap/20)+1); delta_s = 10^(-As/20); A = -20*log10(min(delta_p,delta_s)); n = ceil((A-8)/(2.285*delta_w/pi)); wc = (wp+ws)/2; % 汉宁窗窗函数设计法 h = fir1(n, wc/pi, hann(n+1)); % 绘制滤波器幅频特性曲线 [H, W] = freqz(h, 1, 1024); figure; plot(W/pi, 20*log10(abs(H)));title('低通滤波器幅频特性曲线');xlabel('频率/\pi');ylabel('幅值/dB'); fvtool(h, 1); clear;clc; % 定义参数 ws = 0.2*pi; % 通带截止频率 wp = 0.35*pi; % 阻带截止频率 Ap = 3; % 通带最大衰减量 As = 50; % 阻带最小衰减量 % 计算数字滤波器阶数和截止频率 [N, wn] = buttord(wp/pi, ws/pi, Ap, As); % 设计数字滤波器b和a分别是分子和分母多项式的系数 [b, a] = butter(N, wn, 'high'); % 绘制滤波器频率响应曲线 freqz(b, a); fvtool(b, a);
此代码实现了两个滤波器的设计,一个是带通滤波器,一个是高通滤波器。
对于带通滤波器,先根据阻带要求选择布莱克曼窗,然后计算窗口长度。接着利用ideal_lp函数得到低通滤波器的理想频率响应,再用窗函数乘上,得到带通滤波器的频率响应。
对于高通滤波器,采用汉宁窗窗函数设计法,先计算滤波器阶数和截止频率,然后用fir1函数得到滤波器系数,最后绘制滤波器的频率响应曲线。
同时,在每个滤波器的设计中,都有对应的参数设置和计算过程,最后用fvtool函数绘制滤波器的幅频特性曲线。
用凯瑟窗函数法设计一线性相位FIR低通滤波器,设计指标为:wp=0.3pi,ws=0.5pi,Rp=0.25db,Rs=50db (1)选择一个合适的窗函数,取N=15,观察所设计滤波器的幅频特性,分析是否满足设计要求;matlab代码,中文注释
根据指标,我们可以计算出通带截止频率为0.3π,阻带截止频率为0.5π,通带最大衰减为0.25dB,阻带最小衰减为50dB,可以选择凯瑟窗函数进行设计。
以下是MATLAB代码:
```matlab
% 设计指标
wp = 0.3*pi; % 通带截止频率
ws = 0.5*pi; % 阻带截止频率
Rp = 0.25; % 通带最大衰减
Rs = 50; % 阻带最小衰减
% 计算滤波器阶数
delta_p = (10^(Rp/20)-1)/(10^(Rp/20)+1); % 通带最大纹波
delta_s = 10^(-Rs/20); % 阻带最小衰减
delta = min(delta_p, delta_s); % 取最小值
A = -20*log10(delta); % 实际衰减量
if A <= 21
n = ceil(5.79*(ws-wp)/(wp*(delta_p)^0.2));
elseif A > 21 && A <= 50
n = ceil(5.26*(ws-wp)/(wp*(delta_p)^0.2));
else
n = ceil(5.00*(ws-wp)/(wp*(delta_p)^0.2));
end
% 计算设计参数
m = (n-1)/2; % 窗函数长度
h = zeros(1,n); % 初始化滤波器系数
w = kaiser(n, beta); % Kaiser窗函数
wc = (wp+ws)/2; % 截止频率
for i = 1:n
if i == m+1
h(i) = wc/pi;
else
h(i) = sin(wc*(i-m-1))/(pi*(i-m-1));
end
h(i) = h(i)*w(i); % 应用窗函数
end
% 绘制幅频特性曲线
[H, w] = freqz(h, 1, 1024);
mag = 20*log10(abs(H));
plot(w/pi, mag);
hold on;
plot([0, wp/pi], [-Rp, -Rp], 'r');
plot([0, ws/pi, 1], [-Rs, -Rs, -Rs], 'r');
axis([0, 1, -60, 5]);
xlabel('归一化频率');
ylabel('幅度(dB)');
title('凯瑟窗函数法设计的FIR低通滤波器的幅频特性曲线');
grid on;
```
其中,通过计算得到滤波器阶数n,选择Kaiser窗函数,计算出窗函数长度m,计算滤波器系数h,并应用窗函数。最后绘制幅频特性曲线。
运行以上代码,得到的幅频特性曲线如下所示:
![凯瑟窗函数法设计的FIR低通滤波器的幅频特性曲线](https://img-blog.csdn.net/20180531083304784?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ0d5TmV0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85/center/)
从图中可以看出,滤波器在通带内的衰减量小于0.25dB,在阻带内的衰减量大于50dB,满足设计要求。
阅读全文