ich habe eine sehr grosse cell Matrix (60x1 cell, wobei sich in dieser jeweils 1x111 cell matrizen befinden, in denen sich y x z double matrizen befinden mit der durchschnittlichen groesse ~2000x1). Ich moechte jetzt fuer alle 60 cell matrizen die 1x111 cell matrizen in einer double matrix zusammen fassen, wobei eine grosse y x 111 double matrix entstehen soll.
Ich habe dies mit cat versucht, jedoch gleingt mir auf diese Weise nur das entpacken der ersten cell matrix, wobei ich eine neue 1x6660 cell matrix erhalte, die das Ganze nur verkompliziert, da ich ja eine Zeitserie aufstellen moechte.
Ein weiterer Ansatz sieht wie folgt aus, wobei ich hier das Problem bekomme, dass die Groesse der Linken Matrix nicht mit der Groesse der Rechten Matrix im Verlauf der Schleife uebereinstimmt.
Code:
count=0;
for i=1:length(data)
count=count+1;
a(i,:) = cat(2, data{i,1}{3:111});
ich habe Schwierigkeiten zu verstehen, was du erreichen willst. Ein konkretes Beispiel mit z.B. einem 3x1-Cell Array von 1x4-Cell Arrays mit 5x1-Vektoren könnte helfen.
Zitat:
in denen sich y x z double matrizen befinden mit der durchschnittlichen groesse ~2000x1
Sind die Vektoren innerhalb einer der 60x1-Zellen alle gleich lang? Dann hilft auf dieser Ebene cell2mat.
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 ;)
ich habe das Problem in 3 Screenshots aufgezeigt (im Anhang):
Ich habe eine data matrix (60x1 cell matrix), die wiederum mit 1x111 cell matritzen gefuellt ist. In diesen befinden sich jeweils nx1 double matritzen von unterschiedlicher laenge, wobei sie alle nur eine Spalte haben. Ziel ist es, fuer alle 60 Spalten jeweils die darin enthaltenen Cell Matritzen in einer grossen double Matrix zusammenzufassen (wie eine Zeitserie). Das wuerde eine nx 111 Double Matrix ergeben am Ende.
Mit
Code:
time=data{1,1}{1,1};
totalions= data{1,1}{1,2};
dNlog= data{1,1}{1,3};
for i=1:size(data,1)
time= [time;data{i,1}{1,1}];
totalions= [totalions;data{i,1}{1,2}];
dNlog= [dNlog; data{i,1}{1,3}];
end
bekomme ich das beispielhaft fuer die ersten 3 spalten der 1x111 cell matrix hin, jedoch muesste ich das auf diese Weise 111 mal wiederholen. Ich habe versucht, dies ueber oben gezeigte Beispielcodes zu loesen, was jedoch nicht funktioniert hat.
Sind die Vektoren innerhalb einer der 60x1-Zellen alle gleich lang?
Die Screenshots legen das zwar nahe, aber ich möchte jetzt nicht direkt von 2 auf 60 schließen.
Wenn dem so ist, auch nochmal:
Zitat:
dann hilft auf dieser Ebene cell2mat.
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 ;)
Mit cell2mat komme ich dem Ganzen in der Tat einen ganzen Schritt naeher.
Ein Problem welches sich mir jetzt noch stellt ist wie ich das Ganze in einer Schleife zu einer einzelnen Double Matrix zusammengefasst bekomme. Mit
Code:
count=0;
A=cell2mat(data{1,1});
for i=1:size(data,1)
count= count+1;
test(count,:)=cell2mat(data{i,1});
end
Bekomme ich das Problem, dass ich eine Matrix (rechts) habe die immer gleich lang ist und mit einer Matrix (Links) verglichen wird, die reihenweise aufgefuellt werden soll. Wo liegt hier mein Denkfehler?
ohne Daten zur Verfügung zu haben kann ich dir nur empfehlen, das zu tun, was ich auch machen würde: den Debugger verwenden und mir die Dimensionen der beteiligten Variablen ansehen.
Bitte auch die Rückfrage beantworten.
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 ;)
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 ;)
das ist genau wonach ich gesucht habe, vielen Dank! Das Problem war mir recht fundamental, da ich immer wieder darauf gestossen bin. Ich hatte stets mit
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 ;)
Einstellungen und Berechtigungen
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.