Frage

Ich versuche, eine wirklich einfache Aufsummierung in MATLAB auszuführen. Hier ist mein Code:

moment = 0;

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

Ich möchte (x ^ p * y ^ q * Im (y, x)), die für jede Iteration berechnet zu werden und zu dem Moment variabel, aber diese Funktion in dem Moment das erste Mal, kehrt es berechnet. Es scheint nicht die Zugabe von überhaupt zu tun.

Wahrscheinlich ein dummer Fehler, aber ich bin wirklich verwirrt. Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Könnte es sein, dass Im vom Typ uint8 oder eine ähnliche Art von kleinen Bereich? Versuchen Sie setzen diese Zeile vor den Schleifen:

Im = double(Im);

BTW können Sie Ihren Code in einer Zeile neu zu schreiben:

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

Andere Tipps

setzen Sie einen Haltepunkt auf der moment = moment + ... Linie und sehen, ob die Variable „Moment“ erhöht wird.

Ich bin mir nicht sicher, warum Sie das Komma in dem for-Anweisung verwenden. Es sollte keine Auswirkungen haben, ich glaube nicht, dass, aber es ist nicht notwendig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top