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

会不会Imuint8类型或类似的小范围类型?尝试将此行放在循环之前:

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 回答