1

私は2つの50 x 6行列、sayAと。を持っていBます。マトリックス内の列の各要素に重みを割り当てたい-列の前にある要素に重みを大きくし、同じ列の後半にある要素に重みを小さくする...同様に、6つの列すべてに重みを割り当てます。このようなもの:

cumsum(weight(row)*(A(row,col)-B(row,col)); % cumsum is for cumulative sum of matrix

ループを使用せずに効率的にそれを行うにはどうすればよいですか?

4

1 に答える 1

3

重みベクトルwをベクトルとして使用している場合50x1は、コードを次のように書き直すことができます。

cumsum(repmat(w,1,6).*(A-B))

cumsumところで、なぜループ内のスカラーを操作しているのかわかりません...効果はありません。マトリックス全体でそれをやりたかったのだと思います。マトリックスの呼び出しcumsumは、デフォルトで各列に沿って動作します。行に沿って操作する必要がある場合は、オプションのディメンション引数をとして呼び出す必要があります。cumsum(x,2)ここで、xは任意の行列です。

于 2011-05-19T23:21:30.580 に答える