过滤功能使用Matlab

时间:2012-04-26 21:10:43

标签: matlab filter

我正在尝试在Matlab中执行简单的模拟。 我有一个随机信号x和一个滤波器传递函数。过滤函数的正确用法是什么?

x = rand(100,1);
syms z;
Pnum = (1-0.1*z^-1); 
Pdenum = (1-0.9*z^-1);

y = filter(Pnum, Pdenum, x); 

这会引发错误

  

“未定义函数'过滤器'用于'sym'类型的输入参数。”

我知道它抱怨z变量。我应该怎么解决呢?

1 个答案:

答案 0 :(得分:2)

过滤器命令不是为了采用符号数据类型而构建的。它将原始滤波器系数作为输入。你试图定义的是b系数的差分方程。

b = [1 0.1];

和a系数

a = [1 0.9];

然后您可以按如下方式过滤信号

y = filter(b,a,x)

freqz命令显示这是一个带有一些增益的奇怪的高通滤波器。 。

freqz(b,a)

enter image description here

这是你想要实现的目标吗?

如果你反转系数

b = [1 0.9];
a = [1 0.1];

...你最终得到了一个带有一些增益的低通滤波器

freqz(b,a)

enter image description here