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

csv einlesen und Daten extrahieren

 

DH
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 22.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2016, 23:21     Titel: csv einlesen und Daten extrahieren
  Antworten mit Zitat      
Hallo,

ich möchte mehrere große csv-Dateien einlesen und entsprechende Werte extrahieren. Die Dateien enthalten unterschiedliche Datentypen. Bist jetzt habe ich ein code für das Einlesen mit textscan geschrieben, doch bei der Extraktion der Daten komme ich nicht weiter.
Hier der Code:
Code:

clear all;
cd('C:\Users\Samsung\Desktop\diba masterarbeit\JS');
liste=dir('*.csv');
l=length(liste);
gesamtIndex=0;
data=cell(1,l);

for lauf=1:l

gesamtIndex=gesamtIndex+1;    
fileID = fopen([liste(lauf).name]);
formatSpec=repmat('%s', 1, 300);
data{gesamtIndex}=textscan(fileID, formatSpec, 'Delimiter', ';');
fclose(fileID);

M=[data{gesamtIndex}{:}];

end    
 


Im Anhang noch eine Beispieldatei, aus der ich folgende Werte brauche:
A2925-A2952, E2925-E2952, F2925-F2952, AE2925-AE2952

Kann jemand helfen?
Vielen Dank schonmal!
Grüße

Grossstadt_C001_119_0000_19_0000_FW010Jahresgang_N7101N_Process.zip
 Beschreibung:

Download
 Dateiname:  Grossstadt_C001_119_0000_19_0000_FW010Jahresgang_N7101N_Process.zip
 Dateigröße:  170.92 KB
 Heruntergeladen:  303 mal
Private Nachricht senden Benutzer-Profile anzeigen


gs
Forum-Century

Forum-Century


Beiträge: 172
Anmeldedatum: 17.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2016, 07:23     Titel:
  Antworten mit Zitat      
Hi,

ergänze in deinen Script folgendes:

Code:
R = {};
R = [R M{[2925:2952],1}];
S = {};
S = [S M{[2925:2952],5}];
T = {};
T = [T M{[2925:2952],6}];
U = {};
U = [U M{[2925:2952],31}];

V = [R; S; T; U]


Gruß gs
Private Nachricht senden Benutzer-Profile anzeigen
 
DH
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 22.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2016, 08:05     Titel:
  Antworten mit Zitat      
Hallo, vielen Dank für den Input. Das Problem ist allerdings dass ich eine größere Menge an Dateien einlese und die gesuchten Werte nicht immer an der Gleichen Position sind.
Ich muss mir die gesuchten Werte über eine Überschriftszeile definieren, die irgendwo in der Datei vorkommt und dann die Werte unter "Typ", "Jahr", "Bezeichnung" und "E0" rausnehmen (siehe beigefügter Screenshot)

also vielleicht etwas über index und find?!

image001.png
 Beschreibung:

Download
 Dateiname:  image001.png
 Dateigröße:  21.03 KB
 Heruntergeladen:  305 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2016, 08:50     Titel:
  Antworten mit Zitat      
Hallo,

also über Indexierung muss das gehen - wenn du eine Matrix M hast und nach dem Begriff 'Auto' suchst dann liefert dir der Befehl:

Code:

Stellen = M=='Auto'
 


logisch 1 wo in der Matrix der Begriff Auto steht - je nachdem ob er nur in einer gewissen Spalte vorkommen kann, so kann auch der Code variiert werden!

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
DH
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 22.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2016, 09:05     Titel:
  Antworten mit Zitat      
Ich bekomme die Meldung dass der Operator == nicht für cell inputs benutzt werden kann.

Code:
Undefined operator '==' for input arguments of type 'cell'.


Tipp wie ich mein Cell array umwandeln kann? habe es bereits mit diversen Funktionen probiert, klappt leider nicht da ich mit cell-Arrays nicht viel erfahrung habe Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2016, 09:25     Titel:
  Antworten mit Zitat      
Hallo,

jetz habe ich was gefunden wies gehen soll:

Code:

fun = @(String)(@(Matrix)(strcmp(String, Matrix)));
log = cellfun(fun('Auto', M)
 


Dieser Befehl gib dir dann die logischen Indizes deines Cell-Arrays M zurück
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.