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

Matrizen verrechnen

 

annikilla
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 09.09.19
Wohnort: ---
Version: 2012b
     Beitrag Verfasst am: 24.02.2020, 15:43     Titel: Matrizen verrechnen
  Antworten mit Zitat      
Hallo ihr lieben

ich habe ein Problem bei dem ich nicht mehr weiter komme, hab aber auch nicht so viel Ahnung von Matlab.

Ich habe zwei Matrizen,
R [30x2] und u [2x18000]

ich würde die beiden gerne miteinander verrechen, allerdings so, dass ich die jeweils ersten beiden Zeilen von R mit Zeile 1 bis 600 von u verrechne, dann Zeilen 3 und 4 von R mit Zeile 601:1200 von u usw. Also im Prinzip immer [2x2] mit [2x1].
Das Ergebnis sollte dann wieder eine [2x18000] Matrix ergeben.

Vllt hat ja jemand eine Idee Smile

Beste Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

selbst wenn es ohne gehen sollte, dürfte eine for-Schleife am verständlichsten sein.

Bei u meinst du Spalten? Das hat ja nur 2 Zeilen. Oder liegt das in der Dimensionsangabe?

Was bedeutet "verrechnen"? Addition, Multiplikation, irgendwas anderes?

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
 
annikilla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 09.09.19
Wohnort: ---
Version: 2012b
     Beitrag Verfasst am: 24.02.2020, 15:58     Titel:
  Antworten mit Zitat      
oh ja genau, bei u meine ich Spalten und die würde ich gerne multiplizieren.
Hab mich schon an einer for Schleife versucht, aber so wirklich komme ich da nicht auf das gewünschte Ergebnis.

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

Forum-Meister


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

dann poste doch mal bitte deine Schleife, und dann kann man drüber schauen. Nutzt du tatsächlich noch R2012b??
Sollen die Werte elementweise multipliziert werden oder wie?

Ein kleines Beispiel (z.B. 3x2 und 2x6) mit Daten und gewünschten Ergebnissen würde beim Testen helfen.

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
 
annikilla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 09.09.19
Wohnort: ---
Version: 2012b
     Beitrag Verfasst am: 24.02.2020, 17:09     Titel:
  Antworten mit Zitat      
Hallo,

ja, leider nutze ich tatsächlich immer noch 2012b... Studenten bekommen bei mir am Unternehmen leider nichts besseres :/

Code:
for j = 1:15
    for i = 1:600
        uv_trans(:,j*i) = R(j:j+1,:)*u(:,j*600+i);
    end
end


so sieht das bei mir aus, aber das stimmt glaub leider gar nicht. Bin aber auch wirklich ziemliche Anfängerin. Auszug der Matritzen findest du unten:



Beste grüße
Annika

R:
0.5856   0.8961
0.5627   -0.4698
0.5622   -0.4999
0.5401   -0.8907
0.5377   -0.805
-0.8105   0.5856


u:
12.0287   -12.8786   -9.47901  
-2.8941    0.1882     8.5598


Gewünschtes Ergebnis ist ein bisschen schwierig darzustellen, da die ersten 600 Spalten von u mit der Matriz aus den ersten beiden Zeilen von R multipliziert werden soll. Die ersten zwei Spalten wären folgende:
4.4505   -7.3730      
8.1289    -7.3357
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

für mich macht das einen ganz vernünftigen Eindruck. Man sollte aber mit einer Schleife auskommen können, und dann ist es vielleicht sogar einfacher.

Meinst du wirklich Matrixmultiplikation, oder elementweise?

Stimmt es, dass du das auf jeweils 600 Spalten anwenden willst? Dann hättest du ja bei Zeilen 29 und 30 die Spalten 8401:9000, oder?

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
 
annikilla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 09.09.19
Wohnort: ---
Version: 2012b
     Beitrag Verfasst am: 24.02.2020, 17:31     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich glaube ich habe von Anfang an einen Fehler gemacht. Mein u ist tatsächlich [2x9000] und eine Matrix in der Größe soll auch rauskommen. Hab irgendwie falsch gedacht.
Und ja, ich möchte Matritzenmultiplikation machen, so dass ich theoretisch immer 600 mal die gleiche 2x2 Matrix mit jeweils einer Spalte von u multipliziere, dann zwei nach unten springe und die nächste 2x2 Matrix mit den Spalten 601:1200 mulitpliziere.

Leider kommt bei mir nur eine Fehlermeldung.

Danke dir!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich würde es so versuchen:
Code:
uv_transform = zeros(size(u));
for k = 1:size(r, 1)/2
    uv_transform(:, (k-1)*600+1:k*600) = r(2*k-1:2*k, :) * u(:, (k-1)*600+1:k*600);
end


Falls das nicht klappt oder falsche Ergebnisse liefert, bitte eine genaue Beschreibung des Problems / der Fehlermeldung geben.

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
 
annikilla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 09.09.19
Wohnort: ---
Version: 2012b
     Beitrag Verfasst am: 24.02.2020, 18:24     Titel:
  Antworten mit Zitat      
vielen dank, das funktioniert super!!
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
.





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

Hosted by:


Copyright © 2007 - 2024 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.