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

Zeilen von Matrix aufsummieren,die als cell gespeichert sind

 

sebastian1984

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2011, 08:29     Titel: Zeilen von Matrix aufsummieren,die als cell gespeichert sind
  Antworten mit Zitat      
Hallo,ich habe ein Problem:(
Ich habe sagen wir n=5 matrix, die ich als cell gespeichert habe.
nun habe ich eine andere Matrix, die alle Kombinationen der Zahlen 1 bis n
enthält: i=3
all_combin=combnk(1:n,i)

Jetzt möchte ich z.b anhand der zeilen der all_combin-matrix die jeweiligen
zeilen aufsummieren.
Angenommen meine Kombination als liegender Vektor (aus der matrix all_combine ) ist (1,4,5), so möchte ich die summe
"SUMME= M{1}+M{4}+M{5}" bilden.
Ich hoffe ich konnte das einigermaßen erklären und Ihr mir helfen:)
Vielen Dank schonmal im voraus!


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.04.2011, 15:45     Titel: Re: Zeilen von Matrix aufsummieren,die als cell gespeichert
  Antworten mit Zitat      
Hallo Sebastian,

Ich verstehe die Frage nicht ganz. Aber ich rate einfach mal - vielleicht hilft es ja weiter:
"SUMME= M{1}+M{4}+M{5}"
Code:
c = [1, 4, 5];
S = sum([M{c}]);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
sebastian1984

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.05.2011, 12:40     Titel: Zeilen von Matrix aufsummieren,die als cell gespeichert sind
  Antworten mit Zitat      
Vielen Dank, das hat mir sehr geholfen, jetzt läuft der Abschnitt;)
bin noch blutiger anfänger und wusste das mit der eckigen klammer bei sum([M{c}]) nicht.
Ein anderes Problem war noch, das c zu bilden, denn c ist eine Zeile eine Matrix, hab ich aber mit c=K(i,1:end) gelöst.
 
sebastian1984

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.05.2011, 13:05     Titel: Zeilen von Matrix aufsummieren,die als cell gespeichert sind
  Antworten mit Zitat      
Leider musste ich feststellen, dass er zwar etwas aufsummiert hat, leider nicht das, was ich wollte Confused
Ich erkläre es nochmal:
Ich besitze eine Matrix mit kombinationen:
Code:

comb= 3     4     5
     2     4     5
     2     3     5
     2     3     4
     1     4     5
     1     3     5
     1     3     4
     1     2     5
     1     2     4
     1     2     3

Diese Matrix möchte ich Zeilenweise durchlaufen von i=1:size(comb,1).
Ich habe M{i} mit i=5
die erste Zeile sagt mir die Kombinationen von 3 4 5 , als also habe ich den Vektor [3 4 5], den ich beim ersten durchlauf mit j=1 durch
Code:

j=1:size(comb,1)-1
line=comb(j,1:end);
 

gebildet habe.
Aus dieser Kombination möchte ich die Matrix (anhand von j) immer neu bilden.
Im Falle j=1 wäre es die Matrix:
Summe_i=M{3}+M{4}+M{5} bilden.

Die Matrix haben alle dieselben Dimensionen, sodass es da zu keinen Problem kommen wird!

Vielen dank nochmal für eure Hilfen!

Beste Grüße
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.05.2011, 16:53     Titel: Re: Zeilen von Matrix aufsummieren,die als cell gespeichert
  Antworten mit Zitat      
Hallo Sebastian,
Ich verstehe Deine Beschreibung nicht.
Die Matrix "comb" ist mir noch klar.
Aber dies sagt mir gar nichts:
Zitat:
Ich habe M{i} mit i=5

Was is "M" und was steht im 5.ten Element von M?

Zitat:
Code:
j=1:size(comb,1)-1
line=comb(j,1:end);

Nun ist "line" die Matrix "comb" ohne die letzte Zeile. Dabei ist der Name "line" irreführend, oder?

Zitat:
Aus dieser Kombination möchte ich die Matrix (anhand von j) immer neu bilden.

Aus welcher Kombination möchtest Du welche Matrrix anhand welchen j's neu bilden? "j" ist ja nun ein Vektor.

Zitat:
Im Falle j=1 wäre es die Matrix:
Summe_i=M{3}+M{4}+M{5} bilden.

Nun ist "j" wieder ein Skalar.

Meinst du vielleicht, dass Du einen CELL-Vektor "M" hast, der 5 Matrizen enthält? Falls ja, rate ich nochmal:
Code:
M = cell(1, 5);
for i = 5
  M{i} = rand(4,4);  % Beliebige Testdaten
end

comb= [3     4     5;      2     4     5;      2     3     5; ...
     2     3     4;     1     4     5;     1     3     5; ...
     1     3     4;     1     2     5;     1     2     4;     1     2     3];
for j = 1:size(comb, 1)
  S = sum(cat(3, M{comb(j, :)}), 3);
end

"[M{comb(j, :)}]" hängt die Matrizen nebeneinander, während "cat(3, ...)" die Matrizen in der 3. Dimension aneinander hängt. Danach wird die Summe über die dritte Dimension gebildet und es kommt wieder eine Matrix heraus.
Das ist in Matlab etwas trickreich: Eigentlich produziert SUM in der bearbeiteten Dimension die Länge 1. Also ist "sum(rand(3,4,5), 2)" ein Array der Größe [3 x 1 x 5]. Wenn aber die rechten Dimensionen 1 sind, werden sie einfach verschluckt: "zeros(2,3,1)" und "zeros(2,3,1,1,1,1,1)" ergibt genau das gleiche wie "zeros(2,3)".

Hilft das weiter? Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
sebastian1984

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2011, 16:13     Titel: Zeilen von Matrix aufsummieren,die als cell gespeichert sind
  Antworten mit Zitat      
Vielen dank schonmal für deineMühe und entschuldige für meine schlechte problemdarstellung:oops:

Genau, M{i} mit i=5 sind 5 cells, gefüllt mit Matrix der Dimension 25x6.
Allerdings hat jede Matrix Ihre eigenen Informationen.

Der line-vektor ist dafür gut, um Kombinatinonen asuzuprobieren.
wenn j=1 ist, ist line=[3 4 5 ]
wenn j=2 ist, ist line=[2 4 5 ]
wenn j=6 ist, ist line=[1 3 5 ].

die Zahlen in dem line Vektor stehen für die Matrix aus den cells, die ich gespeichert erzeugt habe und j ist in diesem fall nicht als Vektor im Gebrauch, sondern er dient nur dazu, dasss die Schleif so weit läuft, wie sie soll:)

Jetzt möchte ich die Kombination von j mit j+1 vergleichen, daher läuft die Schleife
Code:
j=1:size(comb,1)-1

bis size(comb,1)-1.


Wenn j=1 ist, möchte ich gerne die Matrix aus dem
Vektor line=[3 4 5 ] aufsummieren
Also Summe1=M{3}+M{4}+M{5}

und j=2 -> line=[2 4 5 ]
Summe2=M{2}+M{4}+M{5}

Jetzt bilde ich z.b Die determinante:

det_1=det(Summe1'*Summe1)
und
det_2=det(Summe2'*Summe2)

jetzt möchte ich die größere det behalten.
z.b ist jetzt det_1 größer.
dann soll der nächste schritt lauten:

j=3 -> line=[2 3 5 ]
Summe3=M{2}+M{3}+M{5}

det_3=det(Summe3'*Summe3)

und jetzt soll det_1 mit det_3 verglichen werden, usw.

Ich hoffe jetzt war die erklärung etwas besser!
 
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.