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

Histogramm eines cell-arrays

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2009, 17:22     Titel: Histogramm eines cell-arrays
  Antworten mit Zitat      
Hi,
ich habe ein vielleicht einfaches Problem, weiß gerade allerdings nicht weiter. Ich hätte gerne ein Histogramm der Werte eines Cell-Arrays. Also ich haben einen Cell-Array mit unterschiedlich langen Vektoren in jedem Eintrag, welche als Werte Zeiten enthalten. Diese Zeiten möchte ich nun gemäß ihrer Häufigkeit in einem Histogramm plotten. Also auf der x-Achse sollen sich die Zeiten befinden und die Anzahl der jeweils vorkommenden Zeit auf der y-Achse. Die Höhe eines Histogrammbalkens soll mir also zeigen wir oft eine Zeit vorgekommen ist. Hat jemand eine Idee, wie ich das hinbekommen könnte? Ich bin für jeden Tipp dankbar, da ich gerade erst anfange mit Matlab zu arbeiten.
Viele Grüße


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2009, 10:34     Titel:
  Antworten mit Zitat      
Hallo,

wenn alle Vektoren als Zeilen-Vektoren in dem cell-array stehen kannst Du folgendes machen:

Code:

C = {rand(1,3),rand(1,3),rand(1,2),rand(1,3)};
n = [C{:}];
hist(n,20)
 


Falls die Vektoren als Zeilen oder Spalten Vektoren vorliegen können, würde ich noch einen Zwischenschritt einfügen:
Code:

C = {rand(1,2),rand(3,1),rand(1,3),rand(3,1)};
tmp = cellfun(@(x)x(:)',C,'uniformoutput',false);
n = [tmp{:}];
hist(n,20)
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2009, 11:08     Titel:
  Antworten mit Zitat      
Dankeschön. Das hat super funktioniert. Die Vektoren waren alle so unterschiedlich, dass ich es über deinen zweiten Vorschlag probiert habe und das hat wunderbar geklappt. Danke.
Vielleicht kannst du mir bei der Sache mit der Hist-Funktion noch ein bisschen weiterhelfen. Ich würde nämlich gerne eine Matrix erstellen, in der die erste Spalte mti die Zeiten wiedergibt und die zweite die Anzahl dieser. Also wie oft die Zeit im gesamten Array vorgekommen ist. Habe das über [n]=hist probiert, bekomme dann aber ja einen Vektor n, der so groß ist, wie ich die Intervallbreite gewählt habe. Muss ich das überhaupt darüber machen oder ginge es auch anders? Denn ich möchte das die erste Spalte der Matrix wirklich nur die Zeiten enthält, welche auch vorkommen und im Histogramm auf der x-Achse auftauchen. Oder kann ich da die Funktion find benutzen? Ich blicke bei den ganzen Funktionen nömlich nicht mehr durch, welche hier am sinnvollsten und einfachsten wäre.
lg und nochmal Danke
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2009, 12:43     Titel:
  Antworten mit Zitat      
Hallo,

der Befehl hist kann neben der Anzahl der Werte auch die jeweiligen Zentren der Bins zurückgeben. Ebenso kannst Du die Bin-Zentren vorgeben.
Danach kannst Du aus den Vektoren noch alle Elemente entfernen, die 0 mal vorkommen.
Beispiel:
Code:

r = [10;8;1;4;8;8;3;3;7;5;7;3];
[n,x] = hist(r,1:10);
M = [n(n>0)',x(n>0)'];
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2009, 13:54     Titel:
  Antworten mit Zitat      
Super, danke. Jetzt habe ich es genau so, wie ich es haben wollte. Vielen Dank.
 
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.