MATLAB表示“fir2功能还设计了窗口FIR滤波器,但具有任意形状的分段线性频率响应。 这与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。理论上这应该是正确的。我不明白什么是错的。