2009-10-25 21 views
0

我想在MATLAB中執行一個非常簡單的求和。這裏是我的代碼: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))來計算每個迭代,並添加到時刻變量,但是這個函數返回的那一刻第一次計算。它似乎沒有做任何加法。

大概是一個愚蠢的錯誤,但我真的很困惑。有什麼建議麼?

回答

6

難道是Imuint8或類似的小範圍?嘗試把此行的循環之前:

Im = double(Im); 

BTW,你可以在一行中重寫代碼:

moment = sum(sum(((1:rows)'.^q * (1:cols).^p) .* double(Im))); 
+0

的確,我是型UINT8的,但現在的工作。謝謝! – Domenic 2009-10-25 23:10:46

+0

在單線解決方案中,看起來'p'和'q'可能會顛倒過來。 – gnovice 2009-10-25 23:13:27

+0

@gnovice:固定,良好的捕獲 – Amro 2009-10-25 23:34:40

0

moment = moment + ...行上放置一個斷點,看看變量「moment」是否正在增加。

我不確定爲什麼在for語句中使用逗號。它不應該有效果,我不認爲,但它是沒有必要的。