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

Neuling: einlesen csv Datei aus Dateienliste

 

laurroli
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2013, 14:55     Titel: Neuling: einlesen csv Datei aus Dateienliste
  Antworten mit Zitat      
Hallo Leute.

Ich versuche eine Datei aus einer Liste einzulesen.
Es handelt sich um eine csv Datei, bei der die Dezimalzahlen durch Komma und die Trennung der Dezimalzahl durch Semikolons erfolgt.

Hier der Code:
Code:
% Datei aussuchen
disp(' ')
Verzeichnis = dir(pfad);%% Liste Dateien erstellen
a = 0;
for i = 3:size(Verzeichnis,1)%% ab 3 um andere Ordner auszuschließen
   Name = Verzeichnis(i).name;
   if isempty(strfind(Name,'.csv')) == 0
%Suchen der vorhandenen Excel-Datei
       a = a+1;
      Dateienauswahl{a} = Name;
      Datenvergl{a} = Name(1:size(Name,2)-5);%% -5?
   end
end

 
% Dateien aussuchen
disp('vorhandene Dateien:')
for i = 1:numel(Dateienauswahl)
    disp(['  ' int2str(i) ') ' Dateienauswahl{i}]) %Auflisten der Import-dateien
end
auswahl = input(['Bitte Datei auswählen! ' int2str(i) '):  ']); %Auswahl Import-Datei

 
Datei_read = Dateienauswahl{auswahl};
Datei_vergl = Datei_read(1:size(Datei_read,2)-5);
Vergleich = strcmp(Datei_vergl,Datenvergl);
Anzahl_Dateien = size(Vergleich(Vergleich==1));

 
%% Ersetzen Semikolons durch Komma

comma2point(Datei_read);

for j=1:Anzahl_Dateien(2)

fid = fopen([pfad,Datei_read(1:size(Datei_read,2)-5),int2str(j),'.csv']) ;
Messwertezelle = textscan (fid,'%f','delimiter',';','Headerlines',0);
fclose(fid);
end;
 


Dabei benutze ich die Funktion comma2point
Code:
function file=comma2point(filename)
   
    file    = memmapfile(filename,'Writable',true);
    comma   = uint8(',');
    point   = uint8('.');
    file.Data(( file.Data==comma)' ) = point;
    delete(file)

end


Nun bekomme ich die Fehlermeldung, dass memmapfile den file nicht öffnen kann.

Was ist falsch am Code?

[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]
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: 24.06.2013, 15:28     Titel: Re: Neuling: einlesen csv Datei aus Dateienliste
  Antworten mit Zitat      
Hallo laurroli,

Du liest "Verzeichnis" im dem Ordner "pfad" ein.
Später versuchst Du aber auf "Datei_read" ohne Pfad zuzugreifen. Möglicherweise möchtest Du:
Code:
comma2point(fullfile(pfad, Datei_read));

Ich verstehe aber nicht wirklich, ob diese Datei später überhaupt verwendet wird. Direkt danach liest Du nicht "Datei_read" ein, sondern:
Code:
[pfad,Datei_read(1:size(Datei_read,2)-5),int2str(j),'.csv']

FULLFILE ist sicherer als "pfad" direkt in den String einzufügen, weil dabei auch die File-Separatoren berücksichtigt werden.

Gruß, Jan
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.