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

Umwandlung von nested cell arrays

 

Janika O
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2017, 09:37     Titel: Umwandlung von nested cell arrays
  Antworten mit Zitat      
Hallo,

ich arbeite jetzt schon eine ganze Weile an einem Problem und finde leider nichteinmal im Ansatz eine Lösung dafür Crying or Very sad
Vielleicht ist es auch ganz einfach aber ich komme einfach nicht dahinter.
Ich habe Daten eingelesen die ich nun auswerten möchte und zwar wie folgt:
Es gibt zwei nested cell arrays mit jeweils gleicher Anzahl (1x1240 in dem jeweils 1x100,1x200, etc. cells enthalten sind).
Jedes cell array steht hierbei für einen Zeitschritt in meiner Auswertung.

Was ich erreichen möchte ist, dass ich diese Werte nun geordnet untereinander bekomme und möglichst die beiden Datensätze nebeneinander/zueinander auftagen und sortieren kann. Am besten so, dass die Zeitschritte auch noch nachzuvollziehen sind. So dass ich am ende eine Datei mit dem Inhalt:
1 , x1.1 , y1.1
1 , x1.2 , y1.2
1 , x1.3 , y1.3
...
2 , x2.1 , y2.1
.....

Ich weiß, das ist sehr unübersichtlich aber ich hoffe ihr versteht was ich sagen möchte Confused

Vielen Dank schonmal für eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2017, 09:43     Titel:
  Antworten mit Zitat      
Hallo,

ein kleines, konkretes Datenbeispiel könnte helfen.
Mir ist z.B. nicht klar, wie die Zuordnung zu 1, 2 etc. erfolgen soll.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Janika O
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2017, 09:59     Titel:
  Antworten mit Zitat      
Leider habe ich nur meine bisherigen Daten Sad aber ich versuche zu beschreiben was ich meine:
Die Zuordung von denn 1 und 2 soll aus den vorherigen Spalten der cell arrays entstehen, oder ich muss eine komplett neue Datenreihe einfügen. Diese beschreiben später die Zeitschritte aus denen die 100, 200, etc. Daten hervorgehen.

Also ich möchte aus zwei mal:
    Spalte1 Spalte2 Spalte3 ...
    1x100 1x200 1x300 ...


eben beschriebene Datei erhalten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2017, 10:08     Titel:
  Antworten mit Zitat      
Hallo,

d.h. die Zugehörigkeit zu Zeitschritten passiert über die Länge der Daten?
Oder sind es immer drei Cells, die zu einem Schritt gehören? Dann würde das aber nicht aufgehen, da 1240 nicht durch 3 teilbar ist...

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Janika O
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2017, 10:10     Titel:
  Antworten mit Zitat      
Ja richtig, Die Zeitschritte sollen über die Länge der cells laufen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2017, 10:21     Titel:
  Antworten mit Zitat      
Hallo,

also so?
Code:
x = {rand(1,3), rand(1,5), rand(1,7), rand(1,2), rand(1,4), rand(1,6), rand(1,4), rand(1,6), rand(1,8)}
y = {rand(1,3), rand(1,5), rand(1,7), rand(1,2), rand(1,4), rand(1,6), rand(1,4), rand(1,6), rand(1,8)}
l = cellfun(@length, x)
t = cumsum([1,diff(l)<0]);
res = [num2cell(t'), x', y']


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Janika O
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2017, 10:26     Titel:
  Antworten mit Zitat      
Ja genau!

Nur bekomme ich das aus meinen vorhandenen cell arrays nicht hin. Bin leider auch noch nicht so vertraut mit Matlab und finde einfach keinen Ansatzt, wie ich diese so untereinander geschrieben bekomme um dann weiter zu arbeiten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Janika O
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2017, 10:37     Titel:
  Antworten mit Zitat      
Kann ich es in dieser Form einfach mit
Code:
umwandeln? Ich bin mir nicht sicher ob die Zahlenreihenfolge so stimmt wenn ich das so anwende.

Aber schonmal vielen Dank! Damit bin ich schon einen großen Schritt weiter!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2017, 10:42     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Nur bekomme ich das aus meinen vorhandenen cell arrays nicht hin.

Dann haben deine Cell Arrays eine andere Form als ich angenommen habe. Welche das ist, kann ich leider nicht erahnen.

Zitat:
Kann ich es in dieser Form einfach mit
x = cell2mat(res)
umwandeln?

Ich würde sagen: nein, denn die Zeilen sind ja nicht alle gleich lang.

Edit: vielleicht meinst du auch das?
Code:
x = {rand(1,3), rand(1,5), rand(1,7), rand(1,2), rand(1,4), rand(1,6), rand(1,4), rand(1,6), rand(1,8)}
y = {rand(1,3), rand(1,5), rand(1,7), rand(1,2), rand(1,4), rand(1,6), rand(1,4), rand(1,6), rand(1,8)}
t = cumsum(cell2mat(cellfun(@helper, x, 'UniformOutput', false)'));
res = [t, cell2mat(x)', cell2mat(y)']


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Janika O
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2017, 12:54     Titel:
  Antworten mit Zitat      
Ich habs gelöst bekommen. Danke dir! Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2017, 13:21     Titel:
  Antworten mit Zitat      
Hallo,

bitte immer dazu schreiben, wie.
Dann haben auch andere Leute was davon, die ein ähnliches Problem haben und auf diesen Thread stoßen.

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