bode和freqz之间的区别

时间:2014-12-02 03:33:20

标签: matlab

我在MATLAB中创建一个过滤器,如下所示:

[num,den] = ellip(10,0.1,50,4000/22050,'high');

使用 freqz 然后我发现过滤器的频率响应如下:

freqz(num,den)

这会产生预期的高通滤波器图。但是,如果我尝试使用 bode 函数绘制相同的值集,我会得到完全不同的东西。

bode(tr(num,den))

这会产生低通滤波器图。我不明白这些功能是如何工作的?据我所知,freqz将传递函数的系数作为其参数。这也是我用bode函数做的事情。

为何与众不同?

1 个答案:

答案 0 :(得分:2)

[b,a] = ellip(n,Rp,Rs,Wp)

其中b,a是z-domain代表,

enter image description here

默认情况下tf适用于s-domain:

您可以改为使用filt

[b,a] = ellip(10,0.1,50,4000/22050,'high');
freqz(b,a) 
figure
bode(filt(b,a))

您也可以使用bode(tf(b,a,-1,'variable','z^-1'))

检查variable property的{​​{1}}。

  

指定传递函数显示变量的字符串。变量可以采用以下值:

     

's' - 连续时间模型的默认值

     

'z' - 离散时间模型的默认值

     

'p' - 相当于's'

     

'q' - 相当于'z'

     

'z ^ -1' - 'z'的反转

     

'q ^ -1' - 相当于'z ^ -1'