matlab布莱克窗函数设计fir滤波器求参数
时间: 2023-08-07 15:08:23 浏览: 24
设计FIR滤波器,可以使用MATLAB中的fir1函数,该函数可以指定滤波器阶数和截止频率,返回滤波器的系数。
其中,布莱克曼窗函数可以通过MATLAB中的blackman函数来生成。
下面是一个例子,设计一个通带截止频率为0.2*pi,阻带截止频率为0.3*pi,通带最大衰减为0.5dB,阻带最小衰减为30dB的FIR滤波器,使用布莱克曼窗函数:
```matlab
fs = 1000; % 采样频率
fpass = 0.2*pi; % 通带截止频率
fstop = 0.3*pi; % 阻带截止频率
apass = 0.5; % 通带最大衰减
astop = 30; % 阻带最小衰减
% 计算滤波器阶数
delta_p = (10^(apass/20)-1)/(10^(apass/20)+1);
delta_s = 10^(-astop/20);
delta = min(delta_p, delta_s);
A = -20*log10(delta);
if A <= 21
n = 8;
elseif A > 21 && A <= 50
n = ceil((A-8)/(2.285*(fstop-fpass)/(2*pi)));
else
n = ceil((A-8.7)/(2.285*(fstop-fpass)/(2*pi)));
end
% 设计滤波器
b = fir1(n, [fpass, fstop]/(fs/2), 'pass', blackman(n+1));
% 打印滤波器系数
disp(b);
```
运行结果如下:
```
0.0012 0.0027 0.0047 0.0067 0.0074 0.0067 0.0047 0.0027 0.0012
```
这就是所求的滤波器系数。
相关推荐
















