Hallo, ich steige gerade in Matlab ein und tu mich gerade an einer Stelle etwas schwer. Nun hoffe ich das ihr mit vielleicht weiterhelfen könnt. Was habe ich vor? Ich habe zwei Vektoren, einen Zeilen und einen Spaltenvektor unterschiedlicher länge, die ich miteinander Multiplizieren möchte. Das soll dann in etwa so ausschauen: x*y 1 2 3 4 5 1 1 2 3 4 5 2 2 4 6 8 10 3 3 6 9 12 15 Das ist nur die Vorhut für die eigentliche Aufgabe, nämlich eine Division: x/y 1 2 3 4 5 1 1 2 3 4 5 2 0.5 1 1.5 2 2.5 3 1/3 2/3 1 4/3 5/3 Leider bekomme ich das um's Verrecken nicht hin. Mir ist grundsätzlich klar, dass ich die Breite des Vektors 1 auf die Länge des Vektors 2 aufplustern muss und umgekehrt, aber wie? Ich wäre für Hilfe sehr dankbar. Tada...
Danke Thomas, warum bin ich nicht selbst darauf gekommen? Das heißt also Matlab besteht darauf, dass einer der beiden ein Spaltenvektor und der andere ein Zeilenvektor sein muss. Warum kann man diesen Hinweis nicht als Fehlermeldung dem Nutzer auf die Augen bringen? Stattdessen wird einfach gesagt -geht nicht-, nun friss oder stirb. Ich seh schon, Matlab und ich werden wohl nicht die besten Freunde werden. Tada...
Das liegt aber nicht an Matlab, sondern an den Regeln der Matrizenmultiplikation (Spaltenzahl der linken Matrix muss mit Zeilenzahl der rechten übereinstimmen)...
Steffen P. schrieb: > Danke Thomas, warum bin ich nicht selbst darauf gekommen? > Das heißt also Matlab besteht darauf, dass einer der beiden ein > Spaltenvektor und der andere ein Zeilenvektor sein muss. Warum kann man > diesen Hinweis nicht als Fehlermeldung dem Nutzer auf die Augen bringen? > Stattdessen wird einfach gesagt -geht nicht-, nun friss oder stirb. Ich > seh schon, Matlab und ich werden wohl nicht die besten Freunde werden. > > Tada... Hallo Steffen, also die Fehlermeldung lautet doch wahrscheinlich so:
1 | ??? Error using ==> mtimes |
2 | Inner matrix dimensions must agree |
und sagt doch auch genau das aus: "Fehler in Multiplikationsroutine - die inneren Dimensionen müssen übereinstimmen" - denn sonst ist die Matrix-Multiplikation ja nicht definiert. Viele Grüße Nicolas
Man mag darüber streiten, ob die Fehlermeldung weiter hilft oder nicht. Wenn man nicht weiß was die innere Matrix-Dimension eines Vektors ist, dann hilft diese Ausgabe wenig weiter. Hilfreicher wäre gewesen, machen sie aus einem Vektor einen Spaltenvektor und schon funktioniert es. Thomas schrieb: > a=[1 2 3] > b=[1 2 3 4 5] > a'*b > (a^-1)'*b Es muss übrigens (a.^-1)'*b heißen. Tada...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.