МАТЛАБ: Почему это суммирование не работает должным образом? - PullRequest
0 голосов
/ 26 октября 2009

Я пытаюсь выполнить действительно простое суммирование в 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)) вычислялся для каждой итерации и добавлялся к переменной момента, но эта функция возвращает момент при первом вычислении. Это, кажется, не делает добавления вообще.

Возможно, глупая ошибка, но я действительно запутался. Есть предложения?

Ответы [ 2 ]

6 голосов
/ 26 октября 2009

Может ли быть так, что Im имеет тип uint8 или похожий тип малого диапазона? Попробуйте поставить эту строку перед циклами:

Im = double(Im);

Кстати, вы можете переписать свой код в одну строку:

moment = sum(sum( ((1:rows)'.^q * (1:cols).^p) .* double(Im) ));
0 голосов
/ 26 октября 2009

установите точку останова на линии moment = moment + ... и посмотрите, увеличивается ли переменная «момент».

Я не уверен, почему вы используете запятую в операторе for. Это не должно иметь эффекта, я не думаю, но в этом нет необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...