2

A^x * vここでA、 はグラフ内の隣接行列を表す正方行列、はxステップ数、vは初期ベクトルです。

私の目標は、結果として得られる各ベクトルの最初の要素をプロットすることです。つまり、欲しいA*v[1], A^2*v[1], A^2*v[1]

私は試した

x = 1:1:50 
y = A^x*v
plot(y(1),x)

しかし、得た

Error using  ^ 
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.

私はエラーを理解していますが、Matlab のプロットの例から離れて、この問題にアプローチする他の方法を理解していません。

助けてくれてありがとう!

4

3 に答える 3

4

ほぼ1つのライナーが必要な場合:

x = 1:1:50;
f = @(z) z(1);
plot(x, arrayfun(@(n) f(A^n*v), x))

あなたが試したもののエラーは:から来ていますA^x:はベクトルではありえません、それは正方行列なxのでスカラーでなければなりません。A詳細については、のヘルプをmpower参照してください。

于 2013-02-25T03:55:24.960 に答える
2

計算の一部を保存するのはどうですか?
最初の要素を取得するために、積全体を計算する必要はありませんA*v

x = 1:1:50;
f = (n) A(1,:) * ( A^(n-1) ) * v; % returns a scalar - no redundant computation
plot( x, arrayfun( f, x ) ); 
于 2013-02-25T07:48:38.830 に答える
1

匿名関数ではなく、 @Simon の回答への変更。subsref

x = 1:1:50;
s.type = '()';
s.subs = {1};
plot( x, arrayfun( @(n) subsref( (A^n)*v, s ), x ) );

についてのこの回答も参照してくださいsubsref

于 2013-02-25T08:06:14.143 に答える