MATLAB:为什么这个求和不能正常工作?

Dom*_*nic 0 matlab sum

我正在尝试在MATLAB中执行一个非常简单的求和.这是我的代码:

moment = 0;

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

我希望(x ^ p*y ^ q*Im(y,x))计算每次迭代并添加到矩变量,但此函数返回第一次计算时的时刻.它似乎根本没有添加.

可能是一个愚蠢的错误,但我真的很困惑.有什么建议?

Amr*_*mro 6

可能Imuint8类型或类似的小范围类型?尝试在循环之前放置此行:

Im = double(Im);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你可以在一行中重写你的代码:

moment = sum(sum( ((1:rows)'.^q * (1:cols).^p) .* double(Im) ));
Run Code Online (Sandbox Code Playgroud)