Ich bin ganz neu hier und habe eine Frage zur Addition von Matrizen in Arrays.
Und zwar habe ich eine verschachtelte Array "Test" mit zwei Zellen {1,1} und {2,1}. Innerhalb dieser Zellen befinden sich in den Zellen {1,1} bis {4,2} insgesamt vier 767x6 Matrizen, die ich innerhalb dieser Zellen gerne elementweise aufeinander addieren möchte, sodass ich statt vier Matrizen eine Matrix der Dimension 767x6 habe. Ich brauche also einen Befehl, der mir in Test{1,1} und in Test{2,1} jeweils die vier hinterlegten 767x6 Matrizen elementweise addiert:
temp_1{1,1}{1,1}+temp_1{1,1}{2,1}+temp_1{1,1}{3,1}+temp_1{1,1}{4,1}
und
temp_1{2,1}{1,1}+temp_1{2,1}{2,1}+temp_1{2,1}{3,1}+temp_1{2,1}{4,1}
Zudem muss die Anzahl der Zeilen der Zellen und Unterzellen variabel gehalten werden (so wie in dem Code unten , der leider nicht funktioniert, mit den Laufkoordinaten i und k gezeigt ist).
Ich habe gestern ziemlich lange im Internet gesucht und viele Befehle ausprobiert, aber nichts davon hat funktioniert. Habt ihr vielleicht eine Idee?
die Funktion
sum
summiert seinen Inhalt zu einer Summe. Das ist ja anscheinend nicht gewollt.
So könnte es gehen:
Code:
dudu = zeros(767,6,2); % 2 Matrizen der Größe 767x6 mit Nullen initialisieren for i=1:2 for k=1:4
dudu(:,:,i) = dudu(:,:,i) + Test{i,1}{k,1}; % Aufsummieren von 4x 767x6 end end
Allerdings könnte man den 1. ersten Summendurchgang auch sparen, in dem man dudu gleich mit den jeweils 1 Matrizen Test{1,1}{1,1} und Test{2,1}{1,1} initialisiert.
Es wäre viel einfacher, wenn Du hier nicht geschachtelte Cell-Arrays sondern mehrdimensionale numerische Arrays verwenden würdest. Cell-Arrays sind nur dann hilfreich, wenn die Elemente unterschiedliche Größe oder Typ haben.
Wann immer Du im Forum schreibst "funktioniert nicht", wird eine genaue Erklärung benötigt: Bekommst Du eine Fehlermeldung? Weichen die ergebnisse von Deinen Erwartungen ab?
Vielen Dank für eure Antworten. Der von DSP vorgeschlagene Code funktioniert leider nicht.
@Jan: Ich bin mir nicht sicher, wie ich das angehen soll. In dem Code unten sieht man, in welcher Form meine Daten vorliegen. Das Ergebnis in m{1,1} ist genau das was ich möchte. Allerdings sind die Ergebnisse in m{2,1} falsch..
m{2,1} soll genauso gebildet werden wie m{1,1} gebildet wurde.
dudu = zeros(767,6,2); % 2 Matrizen der Größe 767x6 mit Nullen initialisieren for i=1:2 for k=1:4
dudu(:,:,i) = dudu(:,:,i) + Test{i,1}{k,1}; % Aufsummieren von 4x 767x6 end end
Ich habe Fehler nun gefunden. Ich habe temp_2 nun nach jedem Durchgang der Schleife wieder auf Null gesetzt. Das war vorher verkehrt, weswegen die Matrizen alle immer und immer wieder einfach drauf addiert wurden, sodass nur die erste errechnete Matrix gestimmt hat. Nun stimmt das Ergebnis aber.
Code:
for l=1:e
temp_2=zeros(3,6);
for n=1:snap/stepsize
temp_1{l,1}{n,1}(1:a,:)=EigenV(n,l)*Zug_E11((n-1)*a+(1:a),:);
temp_2=temp_2+temp_1{l,1}{n,1};
end
m{l,1}=temp_2;
end
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
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.