2009-10-25 6 views
0

저는 MATLAB에서 아주 간단한 합계를 수행하려고합니다. 여기 내 코드 : I 원하는MATLAB : 왜이 ​​합계가 제대로 작동하지 않습니까?

moment = 0; 

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

(X^피의 * y를^Q는 * 임은 (Y, X)) 각각의 반복에 대하여 계산하고 순간 변수에 추가되지만이 기능은 순간 반환 될 처음 계산됩니다. 그것은 전혀 추가하지 않는 것 같습니다.

아마도 어리석은 실수지만, 나는 정말로 혼란 스럽습니다. 어떤 제안?

답변

6

Imuint8 또는 비슷한 종류의 작은 범위 일 수 있습니까?

moment = sum(sum(((1:rows)'.^q * (1:cols).^p) .* double(Im))); 
+0

예, 임 타입 UINT8의,하지만 지금은 작동합니다

Im = double(Im); 

가 BTW 한 줄의 코드를 다시 작성할 수 있습니다 : 루프 전에이 줄을 넣어보십시오. 고맙습니다! – Domenic

+0

'p'와 같고'q'는 한 줄짜리 해결책에서 뒤집을 수 있습니다. – gnovice

+0

@gnovice : 고정되어 있고, 잘 잡습니다. – Amro

0

moment = moment + ... 줄에 중단 점을 넣고 "순간"변수가 ​​증가하는지 확인하십시오.

for 문에서 쉼표를 사용하는 이유가 확실하지 않습니다. 그것은 효과가 없어야한다고 생각하지는 않지만 불필요합니다.

관련 문제