Program your own function for digital low pass FIR filter design, using the windowing method.

编写自有函数,利用窗函数的方法来构建低通FIR滤波器

其要求如上图,函数形式为第一段"The syntax is:xxxxxxxxxxxx"。

传入的参数有1.通带截止频率f_pass 2.阻带截止频率f_stop 3.采样频率fs 4.阻带衰减A_stop

思路:将传入的模拟频率转为数字频率,然后通过阻带截止频率和通带截止频率计算过渡带宽,根据传入参数A_stop进行窗函数的选择,确定好利用哪个窗函数后根据图标公式计算滤波器阶数,利用b=fir1(N,Wn,window)函数通过不同的窗函数来计算出b。最后利用freqz函数可计算出滤波器的频响特性。自定义滤波器参数:采样频率100Hz、通带截止频率3Hz、阻带截止频率5Hz、衰减分七种情况。核心代码如下(省略了画图部分)

function b = firwindow(f_pass,f_stop,fs,A_stop)%f_pass通带边缘 f_stop阻带边缘 fs抽样频率 A_stop衰减度
Wp = f_pass*2*pi/fs;
Ws = f_stop*2*pi/fs;
TW = f_stop - f_pass;
deltaw = Ws-Wp;
if(A_stop<= 21) %选择矩形窗 
    N = ceil(1.8*pi/ deltaw) + 1;  % 按矩形窗计算所需的滤波器阶数N0
    window = (boxcar(N+1))';        % 矩形窗计算
    Wn=(f_pass+f_stop)/fs;  
    b=fir1(N,Wn,window);
    [H,w]=freqz(b,1);
    db=20*log10(abs(H));
    [phi, w1]=phasez(b,1);
elseif(A_stop<=44)%选择汉宁窗
    N = ceil(6.2*pi/ deltaw) + 1;  % 按汉宁计算所需的滤波器阶数N0
    window = (hann(N+1))';        % 汉宁计算
    Wn=(f_pass+f_stop)/fs;  
    b=fir1(N,Wn,window);
    [H,w]=freqz(b,1);
    db=20*log10(abs(H));
    [phi, w1]=phasez(b,1);
elseif(A_stop<=55)%选择海明窗
    N = ceil(6.6*pi/ deltaw) + 1;  % 按海明窗计算所需的滤波器阶数N0
    window = (hamming(N+1))';        % 海明窗计算
    Wn=(f_pass+f_stop)/fs;  
    b=fir1(N,Wn,window);
    [H,w]=freqz(b,1);
    db=20*log10(abs(H));
    [phi, w1]=phasez(b,1);
elseif(A_stop<=64)%选择凯瑟窗 belt = 6
    N = ceil(4.33*fs/TW);  % 按海明窗计算所需的滤波器阶数N0
    window = kaiser((N+1),6)';%使用凯撒窗
    Wn=(f_pass+f_stop)/fs;  
    b=fir1(N,Wn,window);
    [H,w]=freqz(b,1);
    db=20*log10(abs(H));
    [phi, w1]=phasez(b,1);
elseif(A_stop<=75)%选择布莱克曼窗 
    N = ceil(11*pi/ deltaw) + 1;  % 按布莱克曼计算所需的滤波器阶数N0
    window = (blackman(N+1))';        % 布莱克曼计算
    Wn=(f_pass+f_stop)/fs;  
    b=fir1(N,Wn,window);
    [H,w]=freqz(b,1);
    db=20*log10(abs(H));
    [phi, w1]=phasez(b,1);
end
以下为函数调用:

b=firwindow(3,5,100,21)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值