0

私はMATLABで本当に単純な合計を実行しようとしています。これが私のコードです:

moment = 0;

for y=1:rows,
    for x=1:cols,
        moment = moment + (x^p * y^q * Im(y,x));
    end
end

(x ^ p * y ^ q * Im(y、x))を反復ごとに計算してモーメント変数に追加したいのですが、この関数は最初に計算されたときにモーメントを返します。追加はまったく行われていないようです。

おそらくばかげた間違いですが、私は本当に混乱しています。助言がありますか?

4

2 に答える 2

6

それImはタイプuint8または同様のタイプの小さな範囲のものである可能性がありますか?ループの前にこの行を入れてみてください:

Im = double(Im);

ところで、あなたは一行であなたのコードを書き直すことができます:

moment = sum(sum( ((1:rows)'.^q * (1:cols).^p) .* double(Im) ));
于 2009-10-25T22:15:17.583 に答える
0

行にブレークポイントを設定しmoment = moment + ...、変数「moment」が増加しているかどうかを確認します。

forステートメントでコンマを使用する理由がわかりません。効果はないはずですが、不要です。

于 2009-10-25T22:13:11.727 に答える