首先,我正在使用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固有的功能,不知道该做什么......
答案 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)