Der Betrieb gibt einen skalaren Wert zurück, wenn ein Wertevektor erwartet wird
Frage
Ich bewerten eine einfache Funktion:
y = (2*x)/sqrt( 1 + x.^2 );
Wo x
ist ein Vektor mit etwa 100 Werten. Matlab macht jedoch y
gleich einem einzelnen Skalarwert in diesem Fall. Wenn ich mache:
y = 2*x;
Ich bekomme einen Wertevektor in y
wie erwartet. Wenn ich mache:
y = x.^2;
ich Auch Holen Sie sich einen Wertevektor in y
wie erwartet.
Warum ist die obige Gleichung y = (2*x)/sqrt( 1 + x.^2 );
einen einzelnen Wert und nicht einen Wertvektor geben?
Lösung
Die Operation B/A
(gegeben B = 2*x
und A = sqrt(1+x.^2)
) wird versuchen, durchzuführen Matrix Right Division, was für einen Zeilenvektor x
wird die Lösung im Sinne der geringsten Quadrate für das Gleichungssystem sein yA = B
, was zu einem skalaren Wert für führt y
.
Zum Element-Weise Array Division, führen Sie den Vorgang aus B./A
Stattdessen (beachten Sie die .
).