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

Addition von Matrizen in for-Schleife

 

Max97
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 18.09.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2018, 15:59     Titel: Addition von Matrizen in for-Schleife
  Antworten mit Zitat      
Guten Tag zusammen,

bin neu hier und auch noch recht ungeübt im Umgang mit Matlab.
Ich arbeite im Moment mit mehrdimensionalen Arrays und möchte diese nach einer Berechnung alle aufaddieren.
Mein Code dazu sieht folgendermaßen aus:
Code:

n = 3;
for i=1:n
    result(:,:,i) = data(:,:,i).*data2(:,:,i);
    resultsum = sum(result);
end
 


Dabei sind data und data2 meine mehrdimensionalen Arrays der Größe 5*5*3 und auch die Ergebnismatrix result hat dementsprechend die Größe 5*5*3, diese Berechnung funktioniert soweit auch gut.
Man könnte diese Ergebnismatrix ja quasi auch als drei 2dimensionale Matrizen interpretieren, die übereinanderliegen und diese möchte ich nun effizient addieren in der for-Schleife, um eine 5*5 Matrix herauszubekommen (ja, das ergibt für meinen Anwendungsfall Sinn).
Also per Hand ausgedrückt soll die Schleife folgendes machen:
Code:

result1 = data(:,:,1).*data2(:,:,1);
result2 = data(:,:,2).*data2(:,:,2);
result3 = data(:,:,3).*data2(:,:,3);
result = result1 + result2 + result3;
 


Ist das für Matrizen überhaupt möglich? Ich habe schon gemerkt, dass ich mit dem "sum"-Befehl anscheinend nicht weit komme, da hier die Summe entlang einer Dimension gebildet wird. Hier hat die Ergebnismatrix dann nämlich leider die Dimension 5*3 statt 5*5. Deswegen habe ich auch schon mit sum(result(:,:,i)) usw. herumprobiert bis das Array sogar nur noch eine Dimension hatte, was ja nun noch weiter vom Ziel wegführt. Und nun hab ich keine Ideen mehr.
Vielleicht kann mir ja jemand einen Tipp geben! DANKE!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

Zitat:
Ich habe schon gemerkt, dass ich mit dem "sum"-Befehl anscheinend nicht weit komme, da hier die Summe entlang einer Dimension gebildet wird.

Ja... man kann aber angeben, nach welcher Dimension :) Probier mal

Code:
for i=1:n
    result(:,:,i) = data(:,:,i).*data2(:,:,i);  
end
resultsum = sum(result, 3);

oder gleich
Code:
result = data .* data2;  
resultsum = sum(result, 3);


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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 18.09.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2018, 09:27     Titel:
  Antworten mit Zitat      
Das funktioniert einwandfrei und ist ja richtig simpel! Vielen Dank für deine Hilfe, Harald Smile

Grüße,
Max
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.