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

Cell Array plotten

 

skewcrap
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2013, 20:05     Titel: Cell Array plotten
  Antworten mit Zitat      
Hallo

Wenn ich bei einer normalen Matrix zB. die 3. Spalte plotten will, dann mache ich das so:

Code:
plot(variable(:,3))


Nun habe ich ein Cell Array, in dem sich verschiedenste Matrizen verschiedener Grösse befinden. Ich habe aber auch eine Spalte, wo keine Matrizen drin sind, sondern nur Zahlen (1x1 Matrix wenn man so will).

Warum kann ich nun eine solche spalte nicht so plotten?

Code:
plot(cellarray{:,3})


Gibt es eine andere Möglichkeit eine solche Spalte zu plotten?

Matlab gibt folgende Fehlermeldung:

Error using plot
Data must be a single matrix Y or a list of pairs X,Y

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


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.09.2013, 22:35     Titel:
  Antworten mit Zitat      
Hallo,

wenn du
Code:
cellarray{:,3}

eingibst, kommt wahrscheinlich eine ganze Liste von Ergebnissen (ans = ...). Diese Liste will nachverarbeitet werden, z.B.
Code:
plot([cellarray{:,3}])


Man sollte sich fragen, ob es nicht möglich ist, die Daten intuitiver abzulegen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2013, 22:59     Titel:
  Antworten mit Zitat      
Hm, wenn du eine Idee hast wie?

Ich habe Messwerte von verschiedenen Grössen, die zB. über 5 Stunden kontinuierlich aufgezeichnet werden.
Pro Sekunde werden 10 Werte aufgezeichnet. Es sind zwischen 8-16 verschiedene Grössen. Ich habe also eine Grosse Matrix ca. 200'000x16. In einer Spalte sind jeweils alle Werte einer Grösse.

Ich muss diese Daten dann auswerten. Ich habe nun über 5 Stunden zB. 20 verschiedene "Messintervalle" die ich mir rausgreife. Ein Messintervall umfasst dann ca. 200-2000 Werte.

Für jedes Intervall muss ich Berechnungen anstellen. Da ich grundsätzlich immer noch Vektoren habe und nicht einzelne Werte, habe ich das ganze mit einem Cell Array realisiert. Von gewissen Grössen brauche ich einen Mittelwert, dadurch entsteht dann eine 1x1 Matrix. Deshalb habe ich im Cell Array neben nxn Matrizen eben auch 1x1 Matrizen drin...

Habe mir auch überlegt, für jedes Messintervall ein struct zu machen, das Cell Array fand ich aber praktischer.
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: 16.09.2013, 23:03     Titel:
  Antworten mit Zitat      
wenn du die werte schon alle in einer matrix hast reicht es doch dir irgendwo zu speichern wo die intervalle liegen ^^. aber ja an sich ist ein cell da schon nicht schlecht. nur beim plotten halt etwas umsändlicher. wäre das andere aber auch.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
skewcrap
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2013, 23:14     Titel:
  Antworten mit Zitat      
Ja, ich könnte schon nur die Intervalle speichern. Da ich aber sowieso noch weitere Berechnungen anstelle, die ich nur für ausgewählte Intervalle mache, dachte ich mir ich schreibe alles in eine neue Matrix... So habe ich klar getrennt was Rohdaten sind, und was nicht.

Wieso sind denn die eckigen Klammern nötig, wenn man eine Spalte aus einem Cell Array plotten will?
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: 17.09.2013, 01:02     Titel:
  Antworten mit Zitat      
Hallo skewcrap,

Die eckigen Klammern sind der Matlab-Operator für das Zusammenfassen einzelner Elemente zu einem Vektor oder einer Matrix. Versuche es einfach mal:
Code:
c = {1,4,3};
class(c)
d = [c{:}]
class(d)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

eine Möglichkeit wären z.B. Dataset Arrays (Statistics Toolbox) bzw. in 2013b die neuen Tables (MATLAB).

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