Matlab Tensorprodukt?

Gast #2494806
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
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...
Gast
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
Gast
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.