WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

for Schleife für Matrizen-Vektor

 

Piepe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2014, 09:46     Titel: for Schleife für Matrizen-Vektor
  Antworten mit Zitat      
Hallo,

es geht um folgendes. Ich möchte eine Schleife bauen , die eine Matrix folgender Form hervorbringt:

[C*B
C*(A+I)*B
C*(A^2+A+I)*B
C*(A^3+A^2+A+I)*B] usw.

Mein Problem hierbei ist, dass A,B,C, I Matrizen sind und ich nicht weiß, wie ich die jeweiligen "Matrix-Zeilen" aus der Schleife heraus speichern kann.

Hat jemand eine Idee?

Grüße
Piepe


Piepe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2014, 15:55     Titel:
  Antworten mit Zitat      
Hat wirklich niemand eine Idee? Oder ist die Frage zu einfach und ich habe ein Brett vorm Kopf?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.06.2014, 16:08     Titel:
  Antworten mit Zitat      
Hallo,

welche Dimensionen haben A-C, und was ist der höchste Exponent?
Mit anderen Worten, ist das Performance-kritisch?

Es ist immer hilfreich, wenn man die bisherigen Versuche sieht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Piepe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2014, 16:47     Titel:
  Antworten mit Zitat      
A ist eine 2x2 Matrix. B ebenfalls. C ist ein Vektor 1x2.
Diese bestehen komplett aus rellen Zahlen.

Der Exponent in der Schleife, soll der Stellhorizont (np) sein...also 1.....100 oder so. Den gebe ich individuell vor.
Mein Ansatz existiert eben einfach für Matrizen nicht.

Ich weiß, dass die gesamte Matrix, die später G heißen soll, so viele Spalten haben soll, wie der Stellhorizont groß ist.

Da, jeweils eine 2x2 matrix entstehen wird ist mein erster ansatz

G = zeros(2*np, 2);

Und jetzt muss diese Matrix aufgefüllt werden.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.06.2014, 16:56     Titel:
  Antworten mit Zitat      
Hallo,

wenn C 1x2 ist, dann ist doch C*(2x2)*(2x2) auch 1x2?

Vorschlag:

Code:
G = zeros(np, 2);
cumA = I;
for I=1:np
G(I,:) = C*cumA*B;
cumA = cumA + A^I;
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Piepe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2014, 17:14     Titel:
  Antworten mit Zitat      
ach mist....C ist natürlich auch 2x2
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
ach mist....C ist natürlich auch 2x2

Natürlich ist das für mich nicht ;)
Dann
Code:
G = zeros(2*np, 2);
cumA = I;
for I=1:np
G(2*I-1:2*I,:) = C*cumA*B;
cumA = cumA + A^I;
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Piepe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2014, 17:31     Titel:
  Antworten mit Zitat      
Hallo,

da bekomme ich leider eine Fehlermeldung ausgegeben, da er I nicht kennt.

Was ist cumA ?
Die Cummulativsumme? Und wenn ja, wäre der Befehl dann nicht cumsum(A)?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.06.2014, 19:21     Titel:
  Antworten mit Zitat      
Hallo,

I musst du vorher definieren.
Ich bin anhand der Problembeschreibung davon ausgegangen, dass A,B,C, I (bekannte!) Matrizen sind.

Es ist eine Art kumulative Summe, ja - deswegen auch der Variablenname. cumsum summiert aber eine Matrix spaltenweise auf, statt verschiedene Potenzen davon zu addieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.06.2014, 19:21     Titel:
  Antworten mit Zitat      
Hallo,

I musst du (ebenso wie A-C) vorher definieren.
Ich bin anhand der Problembeschreibung davon ausgegangen, dass A,B,C, I (bekannte!) Matrizen sind. Falls sie das nicht sind, weiß ich offen gesagt nicht, wie du das anstellen willst.

Es ist eine Art kumulative Summe, ja - deswegen auch der Variablenname. cumsum summiert aber eine Matrix spaltenweise auf, statt verschiedene Potenzen davon zu addieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Piepe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2014, 10:17     Titel:
  Antworten mit Zitat      
Oh mein Gott.. da stand ich aber gerade böse auf dem Schlauch.. ja I ist natürlich bekannt. Habe I nur als laufvariable gesehen und nicht als die mir bekannte Matrix.
Dann funktioniert es einwandfrei.
Vielen Dank Smile
 
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.