MATLAB: Porque é que este somatório não está funcionando corretamente?
Pergunta
Eu estou tentando executar um somatório realmente simples em MATLAB. Aqui está o meu código:
moment = 0;
for y=1:rows,
for x=1:cols,
moment = moment + (x^p * y^q * Im(y,x));
end
end
Eu quero (x ^ p * y ^ q * Im (y, x)) a ser calculado para cada iteração e adicionado à variável momento, mas esta função está retornando o momento em que a primeira vez que é calculado. Não parece fazer a adição de todo.
Provavelmente um erro estúpido, mas eu estou realmente confuso. Alguma sugestão?
Solução
Será que Im
é do tipo uint8 ou algum tipo semelhante de pequeno alcance? Tente colocar esta linha antes de os loops:
Im = double(Im);
BTW você pode reescrever seu código em uma linha:
moment = sum(sum( ((1:rows)'.^q * (1:cols).^p) .* double(Im) ));
Outras dicas
colocar um ponto de interrupção na linha moment = moment + ...
e ver se o "momento" variável está sendo aumentado.
Eu não sei por que você usa a vírgula na instrução for. Ele não deve ter um efeito, eu não acho, mas é desnecessário.