1

我正在尝试在 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' 类型的输入参数的未定义函数 'filter'。”

我知道它在抱怨 z 变量。我应该如何解决它?

4

1 回答 1

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)

在此处输入图像描述

于 2012-04-26T22:33:32.607 回答