MATLAB 表示:“fir2 函数还设计了加窗 FIR 滤波器,但具有任意形状的分段线性频率响应。这与 fir1 形成对比,fir1 仅设计标准低通、高通、带通和带阻配置的滤波器。”
我用 fir1 命令找到了 fir 滤波器系数,并通过使用 freqz 获得频率响应,如下所示
b1=fir1(M,wn,'high') % b1:highpass FIR filter coefficients
hd=freqz(b1,1,w) %FIR filter frequency responses with respect to b1
然后我将这个频率响应(hd)传递给 fir2,如下所示
b2=fir2(M,w,hd) % get FIR filter coefficient from same frequency samples(w) and frequency responses(hd)
根据 MATLAB,b1 必须等于 b2,但对于 13 阶 FIR 滤波器,
结果如下:
b1=0.0042 0.0063 -0.0000 -0.0403 -0.1221 -0.2103 0.7470 -0.2103 -0.1221 -0.0403 -0.0000 0.0063 0.0042
b2=0.0017 -0.0044 0.0180 -0.0937 0.2075 -0.1097 -0.0012 0.0105 -0.0081 0.0050 -0.0025 0.0010 -0.0005
b1 不等于 b2。理论上这应该是正确的。我不明白出了什么问题。