我正在尝试在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变量。我应该怎么解决呢?
答案 0 :(得分:2)
过滤器命令不是为了采用符号数据类型而构建的。它将原始滤波器系数作为输入。你试图定义的是b系数的差分方程。
b = [1 0.1];
和a系数
a = [1 0.9];
然后您可以按如下方式过滤信号
y = filter(b,a,x)
freqz命令显示这是一个带有一些增益的奇怪的高通滤波器。 。
freqz(b,a)
这是你想要实现的目标吗?
如果你反转系数
b = [1 0.9];
a = [1 0.1];
...你最终得到了一个带有一些增益的低通滤波器
freqz(b,a)