0

たとえば、サイズが50 * 50の他のマトリックスAのインデックスのマトリックスaがあります。

 2    21     1
 2    41     1
 2    47     1
 2    50     1

各ステップで、たとえば行1で乗算したい


行 2の A(2,21)*A(21,1)

A(2,41)*A(41,1)
.
.
.

だから、私はこのコードを使用します

for i=1:nrow
c=ncol;
   if c~=1
   mul(i)=mul(i)*A(a(i,c-1),a(i,c));
   c=c-1;
   end
end

より効率的なコードはありますか?

4

3 に答える 3

3

sub2indとを使用してそれを達成できますprod

mul=prod(A(sub2ind(size(A),a(:,1:end-1), a(:,2:end))),2);
于 2013-08-12T12:13:30.780 に答える
1

インデックス行列 I を呼び出して、次のようなことを試して
mul = A(I(:,1),I(:,2)) * A(I(:,2),I(:,3))ください。matlab で最適化できるかどうかを確認してください。
私は matlab の表記法にかなり慣れていないので、単純な文が機能しない場合はご容赦ください。

編集:あなたが達成しようとしていることを完全には理解していないと思います。

于 2013-08-12T12:10:20.527 に答える