0

まずsymを使っているので、ステップ(Heaviside)関数が必要です。heaviside(t)私はMatlabに存在することを知っているので、それを使用しています。

さて、私が function: x = -2^(-n+1)*heaviside(n-2)with syms nbefore を持っているとしましょう。今:

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固有の関数しか使用していませんが、何をすべきかわかりません...

4

1 に答える 1

0

シンボリックezplot変数 に代入されたいくつかの実数値の関数を評価することで機能するに違いありませんn。この場合、kroneckerDelta整数値 (非 double) の入力のみを受け入れます。したがって、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)
于 2012-05-15T16:50:30.073 に答える