Matlab Tensorprodukt?

Gast #2494806
Lesenswert?

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...
Gast #2495757
Lesenswert?

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...
#2495791
Lesenswert?

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
Gast #2495845
Lesenswert?

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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren