7 Stimmen

Numerischer Fehler bei der Multiplikation zweier 2-Vektoren in MATLAB

Ich habe diese 2 Vektoren:

alpha =
     1    1    1    1    1    1    1    1    1

f_uv =
   193  193  194  192  193  193  190  189  191

Und wenn ich das tue:

alphaf_uv = alpha * f_uv'

Ich erhalte die Fehlermeldung:

"??? Error using ==> mtimes
Integers can only be combined with integers of the same class, or scalar doubles." 

Das Interessante daran ist, dass dieser Fehler nicht auftritt, wenn ich dieselben Vektoren in der Konsole definiere und die Multiplikation dort versuche.

alpha wird von mir definiert und f_uv wird aus einigen Pixeln in einem PNG-Bild gewonnen.

16voto

paxdiablo Punkte 809679

Vorausgesetzt, es handelt sich bei beiden um ganzzahlige Matrizen für den Anfang, f_uv' darf nicht sein.

Versuchen Sie es:

alphaf_uv = double(alpha) * double(f_uv')

und lassen Sie uns wissen, ob das Problem weiterhin auftritt.

Möglicherweise müssen Sie die alphaf_uv in einen Integer-Typ zurückverwandeln, je nach Bedarf.

5voto

MatlabDoug Punkte 5724

Der wichtigste Hinweis ist der folgende:

alpha wird von mir definiert und f_uv wird aus einigen Pixeln in einem png-Bild gewonnen.

Dies impliziert in hohem Maße, dass die f_uv die Daten kommen als uint8 an. Der WHOS-Befehl wird dies überprüfen. Wenn Sie dies in der Befehlszeile definieren, werden die Vektoren standardmäßig verdoppelt. Das ist der Grund für die Unterschiede im Verhalten zwischen "identischen" Matrizen.

0voto

Vielleicht ist f_uv ein Objekt mit "Konsolenwert", das von einer .toString()-Methode zurückgegeben wird. In diesem Fall müssen Sie f_uv möglicherweise als (int) boxen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X