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

Datenverarbeitung aus cell-arrays (Exceltabelle)

 

Gast0101

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2015, 12:37     Titel: Datenverarbeitung aus cell-arrays (Exceltabelle)
  Antworten mit Zitat      
Hey Smile

ich versuche mein Problem mal zu erklären:
Ich lese mit der Funktion [num,txt,raw] = xlsread('test_tab'); meine Exceltabelle ein.
In dieser Tabelle ist die erste Zeile die Überschrift, es gibt drei Spalten (und ca. 100000 Zeilen): Geburtsdatum, Geschlecht, Gewicht. Bei num bekomme ich nur das Gewicht angezeigt, bei txt nur Geschlecht und jahr und bei raw alle daten, jedoch sind diese in cellen gespeichert für jede Zelle in Excel eine in Matlab.
dadurch dass sie cell sind kann ich mein Programm nicht schreiben, ich möchte gerne per if-Schleife eine Abfrage starten:
1. alle männlichen
2.in einem bestimmten jahr geboren
3.unter 75 kg.
und wenn diese if-schleifen alle zutreffen dann soll die kg-Anzahl mit einem wert aus einer anderen Tabelle multipliziert werden.

Kann mir jemand bei dem Aufbau der if-Schleifen helfen, ich bekomme meistens die antwort: "Undefined function 'eq' for input arguments of type 'cell'.".

Ich würde mich sehr über eure Hilfe freuen.
Katharina


Grünschnabel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 01.10.13
Wohnort: ---
Version: MATLAB R2013a
     Beitrag Verfasst am: 03.07.2015, 13:51     Titel:
  Antworten mit Zitat      
Hi Katharina,
poste doch mal deinen code, eventuell kann dir dann schneller geholfen werden.
LG
Der Grünschnabel
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: 03.07.2015, 13:53     Titel:
  Antworten mit Zitat      
Hallo,

wenn du deinen gesamten verwendeten Code zeigst, ist das ganze deutlich einfacher.
Um die Daten schön zu importieren, würde ich Tables verwenden:
Code:
data = readtable('test_tab');


Für das Geschlecht bietet sich die Verwendung von categorical an.

If-Abfragen in einer for-Schleife sind hier unnötig. Man kann das auch mit logischer Indizierung erreichen.

Für weitere Fragen wäre ein kleiner Testdatensatz hilfreich.

Grüße,
Harald
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: 03.07.2015, 13:55     Titel:
  Antworten mit Zitat      
gibt da einige funktionen die helfen könnten.
cellfun strcmp cell2mat und noch einige andere. für bessere hilfe kann ich mich da nur Grünschnabel anschließen. code und beispieldaten.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1010

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2015, 10:15     Titel:
  Antworten mit Zitat      
Vielen Dank für eure Tipps, ich konnte sie sehr gut verwenden Smile

Hier die ersten 10 zeilen meiner Daten:
Ich habe die Daten mit "readtable" geöffnet, und würde jetzt die einzelnen Spalten umwandeln:

1. mit
Code:

2.
Code:
D=table2struct(B(:,2));
D=struct2cell(D); %nutzung des befehls strcmp erforderlich, um if schleifen zu nutzten.

3. weiß ich nicht...??
Im Anschluß versuchen diese wieder in einer Matrix zusammenzusetzen, ist das mit verschiedenen Datentypen dann möglich??

Gruß, Katharina

B =

Gewicht_kg_ Geschlecht Geburtsdatum
___________ __________ ____________

67 'w' '01.02.1985'
78 'm' '02.03.1967'
65 'w' '15.08.1975'
68 'w' '12.10.1963'
98 'm' '24.09.1990'
102 'm' '14.05.1993'
55 'm' '13.03.1977'
46 'w' '19.05.1988'
78 'w' '25.04.1955'
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
und würde jetzt die einzelnen Spalten umwandeln:

warum, und vor allem warum so kompliziert? Du kannst die einzelnen Spalten über den Namen ansprechen, z.B.
Code:
B.Geschlecht


Zitat:
Im Anschluß versuchen diese wieder in einer Matrix zusammenzusetzen, ist das mit verschiedenen Datentypen dann möglich??

Höchstens als Cell Array oder als Table, aber einen Table hast du ja schon... du kannst damit direkt weitermachen, etwa so:

Code:
B.Geschlecht = categorical(B.Geschlecht);
[B.Geburtsjahr, B.Geburtsmonat, B.Geburtstag] = datevec(B.Geburtsdatum, 'dd.mm.yyyy');
Auswahl = B.Geschlecht == 'm' & B.Geburtsjahr == 1977 & B.Gewicht_kg_ < 75;
B_Auswahl = B(Auswahl, :);


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.