MATLAB: Porque é que este somatório não está funcionando corretamente?

StackOverflow https://stackoverflow.com/questions/1622249

  •  06-07-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top