matlab - bode 和 freqz 的区别

标签 matlab

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

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

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

freqz(num,den)

这会按预期生成高通滤波器图。但是,如果我尝试使用 bode 函数绘制同一组值,我会得到完全不同的结果。

bode(tr(num,den))

这会生成一个低通滤波器图。我不明白这些功能是如何工作的吗?我的理解是 freqz 将传递函数的系数作为其参数。这也是我对 bode 函数所做的。

为什么不同?

最佳答案

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

其中 b,a 是 z 域代表,

enter image description here

而默认情况下 tf 用于 s 域:

你可以使用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'))

检查 tf变量属性

String specifying the transfer function display variable. Variable can take the following values:

's' — Default for continuous-time models

'z' — Default for discrete-time models

'p' — Equivalent to 's'

'q' — Equivalent to 'z'

'z^-1' — Inverse of 'z'

'q^-1' — Equivalent to 'z^-1'

关于matlab - bode 和 freqz 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241406/

相关文章:

matlab - 通过 = [] 删除矩阵元素与重新分配矩阵

matlab - 分类(LDA)函数的作用是什么?

matlab - 在矩阵的每一行中找到前 N 个非零元素

matlab - Matlab音频格式-如何处理?

MATLAB快速查找矩阵中的向量

string - 如何根据顺序对字符串进行编号

matlab - 单应图像变换失真问题

matlab - cumtrapz() 是否有高阶版本?

algorithm - 将重复出现的图像识别为更大的图像

matlab - 在matlab中融合超过2张图像