我试图从一个给定的差分方程中找出因果关系,这是我已经做过的。
y[n] = x[n]-x[n-4]我知道,我可以通过脉冲响应hn=0,n<0的必要条件找到因果关系。我已经知道如何使用Matlab中的filter和filtic操作来查找对任何输入的响应,因此,一种方法是在定义的时间间隔内使输入仅等于n=0的'1‘和其他任何地方的'0’,并找到响应。
我的问题是如何使分子和分母向量在滤波操作。这个特殊的例子有num = [1 0 0 0 -1]和den = 1,我知道如何使值为n的向量向下对应于向量条目,但是这些向量在非因果系统中的值是什么,例如:
y[n]=x[n]+x[n+1]我仍然在学习Matlab,所以我会感谢任何帮助。
谢谢你的关心。
发布于 2018-02-12 17:54:20
在

递归y[n] = x[n] + x[n+1]成为以下域:

在MATLAB中你可以做到
>> num = [1 1];
>> den = [0 1];
>> sys = filt([1 1], [0 1]) % Alternatively: sys = tf([1 1], [0 1], -1, 'variable', 'z^-1')
sys =
1 + z^-1
--------
z^-1
Sample time: unspecified
Discrete-time transfer function.无论如何,当您尝试使用stepplot()或impz()时,您会得到以下错误:
>> stepplot(sys)
Error using DynamicSystem/stepplot (line 107)
Cannot simulate the time response of improper (non-causal) models.
>> impz([1 1], [0 1])
Error using filter
First denominator filter coefficient must be non-zero.在尝试使用zplane()时也会发生同样的情况。
>> zplane([1 1], [0 1])
Error using tf2zp (line 41)
Denominator must have non-zero leading coefficient.这是因为非因果滤波器不是物理上可实现的,因此MATLAB也不能模拟这种响应,也不能识别传递函数的零点和极点。
发布于 2018-02-11 21:54:01
有可能您正在错误地解释num和den的使用。
num/den主要用于表示给定方程的传递函数。传递函数通常用于确定系统/eqn是否稳定/可行,并查找任何输入的输出。
一个传递函数(H)是,
H(s)=( Y(s)/X(s) )
Y(s)和X(s)是y(t)和x(t)的laplace变换。对于采样信号,xn的规则是相同的。
对于最初的问题,取laplace变换,两边都会给出-
y[n] = x[n]-x[n-4] Y(s)=X(s)-(s^4)*X(s) or, Y(s)/X(s)= (1-(s^4))
所以,num=[-1 0 0 0 1] and den=1
对于第二个方程,
y[n]=x[n]+x[n+1] Y(s)=X(s)-X(s)/s or, Y(s)/X(s)= (1-1/s)=(s-1)/s
所以,num=[1 -1] and den=[1 0]
转移fn将是tf(num/den)
希望这能帮上忙。
https://stackoverflow.com/questions/48732239
复制相似问题