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 erzeugen aus cell-array Vektoren

 

kaba123
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.05.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2020, 15:36     Titel: histogramm erzeugen aus cell-array Vektoren
  Antworten mit Zitat      
Hallo zusammen,

ich bin schon ein bisschen länger am Rumprobieren, irgendwie habe ich mittlerweile einen Knoten im Kopf Smile.

Ich habe vielen einzelnen Exel-Files (.xlsx) in einem Ordner, davon brauche ich immer die 4. Zeile in Matlab. Ich hätte das gerne als Matrix zusammengesetzt, aber das geht leider nicht, da die Zeilen immer unterschiedlich lang sind.
Ich habe jetzt durch das hier:

Code:
liste = dir(fullfile('C:\Users\xxxx\ref','*.xlsx'));
files = {liste.name};
pfad2xlsx = 'C:\Users\xxxx\ref';
vektoren_bs = cell (length(files),2);

for k=1:numel(files)
fortlaufend_name_datei = files(k);
filename = fortlaufend_name_datei;  
speed_matrix = xlsread(fullfile (pfad2xlsx, files{k}));
vektoren_bs{k,1} = filename;
vektoren_bs{k,2} = speed_matrix (4,:);
end


geschafft, das ich die einzelnen Zeilen als Vektoren in einem cell-arry abspeicher (2. spalte der cell, erste Spalte ist der Name der Datei, das ich das zuordnen kann). Kann ich das in lauter einzelne Vektoren auch machen? also das der Vektor so heißt wie cellarray Spalte 1 und der Vektor inhalt cell-array Spalte 2 ist? (natürlich automatisch für alle, weil einzeln bekomm ich das schon hin.)

so weit so gut, bisher wäre das auch noch so ok....jetzt möchte ich aber weiter arbeiten damit, und analysieren wie oft welcher Wert in den Vektoren vorkommt.
für einen Vektor habe ich es durch das geschafft:
Code:
a=cell2mat (vektoren_bs(1,2)');
[n, x] = hist(a, unique(a));
b = bar(x,n, 'barwidth', 0.6);


Ich hätte aber gerne EIN Bildchen aus ALL den Vektoren die ich in der cell-array "vektoren_bs" habe. (und zusätzlich wäre noch ein Vektor oder eine Matrix mit den Zahlen der Auswertung schön, also quasi nicht nur das Bild, sondern auch was, was ich in Zahlen abspeichern kann).

Außerdem, wäre es auch schön, wenn ich jeden einzelnen Vektor aus dem cell-array "vektoren_bs" einzeln mit der Benennung der ersten spalte in diesem cell, einzeln haben könnte. Also zum weiter arbeiten. Kann man das Automatisch erstellen? Einzeln kann ich das schon, aber ich glaube in eine for-schleife kann man das nicht packen oder?
Ist mein Problem lösbar??bzw. überhaupt einigermaßen verständlich - es fällt mir nicht leicht zu beschreiben was ich möchte Rolling Eyes ich würde mich über Hilfe sehr freuen.


Vielen lieben Dank schon mal!

VG
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.460
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.06.2020, 11:19     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich hätte aber gerne EIN Bildchen aus ALL den Vektoren die ich in der cell-array "vektoren_bs" habe.

Und wie soll dieses Bildchen aussehen?
Überlagerte Histogramme --> for-Schleife mit hold on
Ein Histogramm mit allen Daten --> Spalte des Cells mit cell2mat in Vektor umwandeln

Zitat:
Außerdem, wäre es auch schön, wenn ich jeden einzelnen Vektor aus dem cell-array "vektoren_bs" einzeln mit der Benennung der ersten spalte in diesem cell, einzeln haben könnte.

D.h. so viele Variablen wie Cells? Das geht zwar mit eval, ist aber keine gute Idee weil unübersichtlich und weiteres Arbeiten auch nur mit eval geht. Sinnvoller wäre m.E. eine Umwandlung in ein Struct mit cell2struct .

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
kaba123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.05.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2020, 06:29     Titel:
  Antworten mit Zitat      
Hallo,

danke für die Antwort. Für die Vektoren habe ich es hinbekommen.
Ich habe die Vektoren mit cell2mat in einer for-Schleife umgewandelt und in eine große Zero-Matrix gepackt, anschließend die "übrigen" Nullen durch NAN ersetzt (da 0 bei mir keine Rolle spielt in den Zahlen) und dann ein Histogramm erstellt. Das hat wunderbar geklappt, und auch meinen Zweck erfüllt.



Nun habe ich aber keine Vektoren mehr, sondern unterschiedlich große Matrizen in meinen cells. (286x2 cell - und in Spalte Zwei befinden sich die einzelnen matrizen-siehe Bild)

Ich hätte jetzt wieder gerene EIN histogramm mit einre farbe an Balken, für alle Matrizen. Die Ordnung der Zahlen innerhalb der Matrizen ist mir dabei egal. Ich hätte einfach nur gerne von dem kompletten Cell-arrray "matrizen_bs_avg" eine Analyse, welche Zahl wie oft vorkommt (Enhält nur reale Zahlen), es muss auch zur not kein Histogramm im ersten Schritt sein, eine Tabelle, welche Zahl wie oft vorkommt, würde auch reichen.


Kann man also die kompletten Zahlen des Cell-array-Spalte 2 einfach in einen "Topf/Sack" oder eine rießen Matrix werfen und dann analysieren?

Vielen DANK!

LG

matlab_forum_inhalt_einer_cell.JPG
 Beschreibung:
Inhalt einer cell, als Beispiel aller, die Analysiert werden sollen

Download
 Dateiname:  matlab_forum_inhalt_einer_cell.JPG
 Dateigröße:  59.47 KB
 Heruntergeladen:  258 mal
matlab_forum.JPG
 Beschreibung:
Aufbau der cell-arry

Download
 Dateiname:  matlab_forum.JPG
 Dateigröße:  27.04 KB
 Heruntergeladen:  237 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Vorschlag:
Code:
M = {'bla', rand(3,3); 'blubb', rand(2,2)}
Mvec = cell2mat(cellfun(@(x) x(:), M(:,2), 'UniformOutput', false));


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
kaba123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.05.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2020, 09:37     Titel:
  Antworten mit Zitat      
Vielen Vielen Dank!!! Laughing
Das ist die Lösung!

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