Z变换Matlab Ezplot错误

时间:2012-05-15 07:29:16

标签: matlab plot transform matlab-figure

首先,我正在使用sym,所以我需要一个步骤(Heaviside)功能。我知道Matlab中存在heaviside(t),所以我正在使用它。

现在,让我说我之前有x = -2^(-n+1)*heaviside(n-2)功能:syms n。现在:

X = ztrans(x);   // z transform
x = iztrans(X);  // inverse z transform

(这应该返回原始的x函数)

这会返回x = kroneckerDelta(n - 1, 0) + kroneckerDelta(n - 2, 0)/4 - 2*(1/2)^n + 2*kroneckerDelta(n, 0)

当我尝试使用x进行ezplot(x)时,它会返回一堆错误:

Error using inlineeval (line 15)
Error in inline expression ==> kroneckerDelta(n - 1, 0) + kroneckerDelta(n - 2, 0)./4 - 2.*(1./2).^n + 2.*kroneckerDelta(n, 0)
 Undefined function 'kroneckerDelta' for input arguments of type 'double'.

Error in inline/feval (line 34)
        INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);

Error in ezplotfeval (line 52)
    z = feval(f,x(1));

Error in ezplot>ezplot1 (line 467)
    [y, f, loopflag] = ezplotfeval(f, x);

如何绘制函数x或阻止这些错误出现?我只使用了Matlab固有的功能,不知道该做什么......

1 个答案:

答案 0 :(得分:0)

我打赌ezplot通过评估替换为符号变量n的某些实数值的函数来工作。在这种情况下,kroneckerDelta仅接受整数值(非双)输入。因此,一个想法是使用subs将整数放入kroneckerDelta

x =

kroneckerDelta(n - 1, 0) + kroneckerDelta(n - 2, 0)/4 - 2*(1/2)^n + 2*kroneckerDelta(n, 0)

>> subs(x,-5:5)

ans =

[ -64, -32, -16, -8, -4, 0, 0, -1/4, -1/4, -1/8, -1/16]

>> plot(-5:5,ans)