使用kaiser窗设计fir带通滤波器的matlab代码示例
时间: 2024-02-18 18:59:07 浏览: 256
以下是使用kaiser窗设计fir带通滤波器的Matlab代码示例:
```
% 指定滤波器参数
fs = 1000; % 采样率
f1 = 50; % 通带截止频率1
f2 = 150; % 通带截止频率2
wp = [f1/(fs/2) f2/(fs/2)]; % 归一化通带频率
ws = [45/(fs/2) 155/(fs/2)]; % 归一化阻带频率
Rp = 1; % 通带最大衰减
Rs = 30; % 阻带最小衰减
% 计算滤波器长度
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((ws(2)-ws(1))/0.15*(fs/f1));
elseif A <= 50
N = ceil((ws(2)-ws(1))/0.22*(fs/f1));
else
N = ceil((ws(2)-ws(1))/0.35*(fs/f1));
end
% 使用kaiser窗设计滤波器
beta = 0.1102*(A-8.7);
if A <= 21
D = 0.9222;
else
D = (A-7.95)/14.36;
end
n = -(N-1)/2:(N-1)/2;
h = (wp(2)*sinc(wp(2)*n)-wp(1)*sinc(wp(1)*n)).*kaiser(N,beta)';
```
其中,`fs`是采样率,`f1`和`f2`是通带截止频率,`wp`是归一化通带频率,`ws`是归一化阻带频率,`Rp`是通带最大衰减,`Rs`是阻带最小衰减。通过计算滤波器长度和选择合适的kaiser窗参数,可以得到带通滤波器的系数`h`。
阅读全文