用凯瑟窗函数法设计一线性相位FIR低通滤波器,设计指标为:wp=0.3pi,ws=0.5pi,Rp=0.25db,Rs=50db (1)选择一个合适的窗函数,取N=15,观察所设计滤波器的幅频特性,分析是否满足设计要求;matlab代码,中文注释
时间: 2023-06-25 09:07:58 浏览: 123
FIR.rar_Kaiser窗函数设计的FIR低通滤波器_kaiser_kaiser function_kaiser窗函数_ka
根据指标,我们可以计算出通带截止频率为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,满足设计要求。
阅读全文