如何用汉宁窗设计一个FIR低通滤波器,写出matlab实现代码
时间: 2024-03-09 13:46:17 浏览: 67
好的,以下是用汉宁窗设计FIR低通滤波器的步骤和Matlab实现代码:
步骤:
1. 确定滤波器的截止频率和折叠频率;
2. 根据截止频率和折叠频率计算出滤波器的通带截止频率和阻带截止频率;
3. 根据通带截止频率和阻带截止频率确定滤波器的通带增益和阻带衰减量;
4. 根据滤波器的截止频率、通带增益和阻带衰减量计算出滤波器的阶数;
5. 根据滤波器的阶数,计算出滤波器的系数;
6. 用汉宁窗将系数加窗。
Matlab实现代码:
```matlab
% 滤波器参数
fp = 1000; % 通带截止频率
fs = 2000; % 阻带截止频率
Rp = 1; % 通带最大衰减量
Rs = 60; % 阻带最小衰减量
Fs = 8000; % 采样率
% 计算滤波器参数
wp = 2 * pi * fp / Fs; % 通带截止频率(弧度)
ws = 2 * pi * fs / Fs; % 阻带截止频率(弧度)
B = ws - wp; % 过渡带宽度
A = -20 * log10(sqrt(Rp * Rs)) % 最小满足衰减量
N = ceil((A - 8) / (2.285 * B)) % 阶数
M = N - 1; % 系数数量
% 计算滤波器系数
h = zeros(1, M+1);
for n = 0:M
if n == M/2
h(n+1) = B / pi;
else
h(n+1) = sin(B * (n - M/2)) / (pi * (n - M/2));
end
h(n+1) = h(n+1) * hann(M+1)'(n+1); % 窗函数加窗
end
% 绘制滤波器幅频响应图
freqz(h, 1, 1024, Fs);
```
阅读全文