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

Summe vieler Matrizen

 

DominikB
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2015, 17:11     Titel: Summe vieler Matrizen
  Antworten mit Zitat      
Hallo, ich hoffe, ich sehe den Wald vor lauter Bäumen nicht: Wie kann ich viele 3D-Matrizen addieren, ohne eine Schleife zu benutzen oder A=A1+A2+A3+A4..... schreiben zu müssen?

z.B.
Wenn ich 2 3D-Matrizen C und F vorliegen habe:
Code:

A=[1 1;2 2], B=[2 2;3 3]; C=cat(3,A,B);
D=[1 1;2 2], E=[2 2;3 3]; F=cat(3,D,E);
 

dann addiere ich C und F mit
Code:

und bekomme z.B. für die erste "Schicht":
Code:

G(:,:,1)=C(:,:,1)+F(:,:,1)=[2 2;4 4]
 

Wie geht das jetzt mit vielen Matrizen?

Vielen Dank und Grüße
Dominik
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.06.2015, 17:17     Titel: Re: Summe vieler Matrizen
  Antworten mit Zitat      
Hallo DominikB,

Man speichert "viele" Matrizen nicht als A1, A2, A3..., denn dabei wird ein Index im Namen der Variablen versteckt. Wenn diese Matrizen aber etwas darstellen, was zusammen gehört (also auch mit Sinn addierbar ist), speichert man sie auch zusammen, z.B. als Cell-Array:

Code:
DataC = {[1 1;2 2], [2 2;3 3], [1 1;2 2], [2 2;3 3]};

Mit Cell-Arrays lässt sich aber nicht leicht rechnen, denn sie sind eigentlich dafür vorgesehen Arrays mit unterschiedlichen Typen und Größen zusammen zu fassen. Für Rechnungen wäre ein mehrdimensionales Array praktischer:
Code:
Data3D = cat(3, Data{:})

Und dann die Summe:
Code:
SumData3D = sum(Data3D, 3)

Und wenn man nur die ersten 3 Matrizen addieren möchte:
Code:
sum(Data3D(:, :, 1:3), 3)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
DominikB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2015, 17:36     Titel: Re: Summe vieler Matrizen
  Antworten mit Zitat      
Hallo Jan,

danke schon mal für deine Antwort. Ich bekomme doch mit

Code:


die Summe aller Elemente entlang der 3. Dimension. Was ich aber brauche,
ist die Summe derjenigen Elemente, die in jeder Matrix an der gleichen Stelle stehen, also

Code:

MatrixErgebnis(1,1)=Matrix1(1,1)+Matrix2(1,1)+Matrix3(1,1)...;
MatrixErgebnis(1,2)=Matrix1(1,2)+Matrix2(1,2)+Matrix3(1,2)...usw.;
 
.

Stehe ich auf dem Schlauch?

Viele Grüße
Dominik
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.06.2015, 17:59     Titel:
  Antworten mit Zitat      
Zitat:
Stehe ich auf dem Schlauch?

ja
Jan S hat Folgendes geschrieben:
Man speichert "viele" Matrizen nicht als A1, A2, A3..., denn dabei wird ein Index im Namen der Variablen versteckt. Wenn diese Matrizen aber etwas darstellen, was zusammen gehört (also auch mit Sinn addierbar ist), speichert man sie auch zusammen, z.B. als Cell-Array:

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DominikB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2015, 20:37     Titel: Indexweise Summation von Elementen vieler Matrizen
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Man speichert "viele" Matrizen nicht als A1, A2, A3..., denn dabei wird ein Index im Namen der Variablen versteckt. Wenn diese Matrizen aber etwas darstellen, was zusammen gehört (also auch mit Sinn addierbar ist), speichert man sie auch zusammen, z.B. als Cell-Array: ...


Ich sehe den Zusammenhang zwischen der Benennung meiner Matrizen und meiner Frage nicht. Dann nenn sie halt Matrizen A,B,C, dann ist kein Index versteckt... . Klar, kann ich sie in Cell-Arrays abspeichern und ja, man muss dann eine längere Zeile schreiben, um mit den Daten, die darin abgespeichert sind, rechnen zu können.

Aber mit dem von dir genannten Weg komme ich nicht auf die gesuchte Lösung...

Grüße
Dominik
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.06.2015, 21:23     Titel:
  Antworten mit Zitat      
wenn du sie a b und c nennst läuft das auf das selbe hinaus. du versteckst eine information im namen. wenn du einfach mit ihnen rechnen willst musst du ein format benutzen das das erlaubt. in deinem fall ist das ein 3d array. so wie jan gesagt hat. wenn du informationen die zusammen gehören in unterschieldichen arrays speicherst ist das natürlich richtig nur kann man dann ebend nicht einfach mit ihnen rechnen. wenn du extra 5 namen anlegst musst du dann auch damit klar kommen das du ihnen 5 namen gegeben hast und nicht nur einen.
du solltest also anstatt A1 A2 und A3 zu erzeugen A(:,:,1) oder auch A{1} erzeugen etc. dann kannst du auch einfach mit ihnen rechnen.
sonst musst du einen sehr schlechten weg über eval gehen oder halt per hand A1+A2+A3 schreiben
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DominikB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2015, 10:33     Titel: Matrizen indexweise addieren - NICHT mit ">> sum&
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:

du solltest also anstatt A1 A2 und A3 zu erzeugen A(:,:,1) oder auch A{1} erzeugen etc. dann kannst du auch einfach mit ihnen rechnen.
sonst musst du einen sehr schlechten weg über eval gehen oder halt per hand A1+A2+A3 schreiben


Auch wenn ich Matrizen in Cell oder Structs abspeichere, ermöglichen mir ebenfalls diese Formate nicht, ohne Schleifen oder "per Hand" die Werte der Matrizen so zu addieren wie es
Code:
indexweise macht.
Wenn ich z.B. ein Array an Matrizen in Cells abspeichere, dann kann ich die einzelen Cell-Position nur mit einer Schleife oder
Code:
abfragen und letzteres addiert die Matrizen wieder in Richtung einer Dimension.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.06.2015, 11:39     Titel:
  Antworten mit Zitat      
Zitat:
Auch wenn ich Matrizen in Cell oder Structs abspeichere, ermöglichen mir ebenfalls diese Formate nicht, ohne Schleifen oder "per Hand" die Werte der Matrizen so zu addieren

jan hat schon geschrieben wie du aus dem cellarray ein 3d array machst.
Zitat:
Wenn ich z.B. ein Array an Matrizen in Cells abspeichere, dann kann ich die einzelen Cell-Position nur mit einer Schleife oder

Code:


abfragen und letzteres addiert die Matrizen wieder in Richtung einer Dimension.

das ist auch das was du oben beschrieben hast.
_________________

richtig Fragen
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 - 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.