Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

MATLAB 7 für Ingenieure: Grundlagen und Programmierbeispiel

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

n-maliges Multiplizieren eines Vektors mit einer Matrix

 

Anton98
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 28.04.19
Wohnort: Mainz
Version: 2018b
     Beitrag Verfasst am: 28.04.2019, 15:16     Titel: n-maliges Multiplizieren eines Vektors mit einer Matrix
  Antworten mit Zitat      
Hallo zusammen,

Ich versuche mittels einer for - Schleife einen Vektor mit einer Matrix n mal zu multiplizieren. Zur Zeit leider ohne wünschenswerten Erfolg. Prinzipiell will ich dieses Prinzip erreichen:

vektor1 = Matrix * vektor
vektor2 = Matrix * vektor1
....

In Matlab habe ich es bisher mit folgender Syntax versucht:
Code:

for i = 1:AnzahlMulti+1
     vektor(i+1) = p * vektor(i);
end
 


Jedoch bekomme ich immer einen Fehlercode "Unable to perform assignment because the left and right sides have a different number of elements."
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 21.153
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.04.2019, 15:53     Titel:
  Antworten mit Zitat      
Hallo,

du extrahierst immer nur ein Element aus dem Vektor. Mögliche Alternativen:
Code:
vektor(:,i+1) = p * vektor(:,i)

oder
Code:
vektor{i+1} = p * vektor{i}


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Anton98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 28.04.19
Wohnort: Mainz
Version: 2018b
     Beitrag Verfasst am: 28.04.2019, 16:56     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort!

Der angegebene Code funktioniert leider nicht ganz, da ich diesen Fehlercode bekomme
"Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 5-by-5."

Ich denke, dass es an den Eingabedaten liegt

Code:

vektor  = [1,1,1,1,1]

for i = 1:Anzahl
    vektor(:,i+1) = p .* vektor(:,i);
end

Wobei p eine 5x5 Matrix ist.
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 21.153
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.04.2019, 17:09     Titel:
  Antworten mit Zitat      
Hallo,

Willst du Matrix- oder komponentenweise Multiplikation?

Falls Matrixmultiplikation, ist p * vektor mit einem Zeilenvektor nicht sinnvoll. Meine Empfehlung wäre also, einen Spaltenvektor zu verwenden. Dann funktioniert auch der Code.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Anton98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 28.04.19
Wohnort: Mainz
Version: 2018b
     Beitrag Verfasst am: 28.04.2019, 17:14     Titel:
  Antworten mit Zitat      
Ich muss leider vom Prinzip her die beiden Matrizen multiplizieren (1x5 Matrix mit der 5x5 Matrix) und das n-mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 21.153
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.04.2019, 17:20     Titel:
  Antworten mit Zitat      
Hallo,

dann aber eben in der zuletzt angegebenen Reihenfolge. Matrixmultiplikation ist nun mal leider nicht kommutativ. Vor allem aber ohne ., dann .* ist komponentenweise Multiplikation.

Code:
vektor  = [1,1,1,1,1]

for i = 1:Anzahl
    vektor(i+1,:) = vektor(i,:) * p;
end


Im übrigen kannst du ebenso gut einmal mit p^Anzahl multiplizieren.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Anton98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 28.04.19
Wohnort: Mainz
Version: 2018b
     Beitrag Verfasst am: 28.04.2019, 17:25     Titel:
  Antworten mit Zitat      
Vielen Dank! Jetzt hat es geklappt Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2020 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.