1

for ループを使用する必要があるかもしれませんが、より効率的で高速な方法があるかどうかを確認したいと考えています。

私は数字の行列を持っています.10x10としましょう。1,1 に 1,2 を掛け、次に 1,3 かける 1,4 などを掛けて、行 1 の結果を合計します。次に、次の行に移動して同じことを行います。最終結果は 10 のベクトルになります。

このマトリックスは 1000x1000 になる可能性があるため、できるだけ高速にしたいと考えています。ありがとう!

4

1 に答える 1

4

私は使うだろう

v = sum(M(:,1:2:end-1).*M(:,2:2:end),2);

ここでM(:,1:2:end-1).*M(:,2:2:end)は乗算を行います。M の奇数列のすべての要素は、右隣の要素と乗算されます。(これは偶数の列を想定しています。そうでない場合、説明したプロセスは正しく定義されていません。)次に、コマンドによってすべての行が追加されsumます。

私のコンピューターでは、1000 x 1000 のマトリックスに対してこれを行うには 0.04 秒かかります。

于 2015-03-05T03:29:59.937 に答える