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

Dynamisch angepasster Dateiname weiter verwenden

 

equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 20.03.2017, 16:57     Titel: Dynamisch angepasster Dateiname weiter verwenden
  Antworten mit Zitat      
Hallo Zusammen Smile

ich hoffe Ihr könnt mir weiter helfen Smile

Ich bekomme "falsche" .csv-Dateien aus einem Messinstrument geliefert, die Datei enthält als Trennung ein Semikolon und als das Trennzeichen einer Kommazahl ein Komma. Nun habe ich mir eine Funktion geschrieben, die eine korrekte .csv-Datei daraus erstellt. Die Originaldatei soll allerdings erhalten bleiben.

Es wird eine neue Datei erstellt und die originale Datei bleibt bestehen.
Nun zu meinem Problem: Wenn ich eine Originaldatei mit dem Namen test.csv einlesen, heißt die erstellte Datei anschließen: test.csv_k.csv, die Datei sollte aber nur test_k.csv heißt, wie kann ich das Problem beheben?

Code:
function convert2csv(filein)
  % convert2csv(filein); filein: Dateiname bzw. Pfad;
  % Konvertiert eine "falsche" .csv-Datei in ein korrektes .csv-Format
  % Ändert zuerst das Komma der Zahl in einen Punkt
  % Ändert das Trennzeichen der Spalte von einem Semikolon in ein Komma
 
fin=fopen(filein, 'r');
   [a,b,c,d,e]=textread(filein,'%s%s%s%s%s','headerlines',1);
    A_k=strrep([a,b,c,d,e],',','.');%Tauscht Komma in Punkt (Kommazahl)
    A_neu=strrep(A_k,';',',');%Tauscht Semikolon in Komma (Trennzeichen Spalte)
    B=str2double(A_neu);
    dlmwrite([filein '_k.csv'],B,',')
    fclose(fin);
end


Bin auf leider nichts gekommen das mir weiter hilft oder ich hab es evtl. falsch angewendet Shocked

Kann man den Neu erstellten Namen (test_k.csv) irgendwie direkt weiterverwenden
quasi um damit zu arbeiten, ohne damit ich den neuen Namen immer von Hand in meinem Skript eingeben muss?

Code:
%% Datei in korrekte .csv konvertieren
convert2csv(test.csv')

%%Daten Einlesen
fid = fopen(test_k.csv', 'r'); %damit es die erstellte Datei direkt hier öffnet?
%Kopfzeile=fgetl(fid)
A=dlmread(test_k.csv',','); %damit es die erstellte Datei direkt hier ließt?


Ich hoffe Ihr versteht mich Smile

Vielen Dank im Vorraus!!

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.03.2017, 18:37     Titel:
  Antworten mit Zitat      
Zitat:
Nun zu meinem Problem: Wenn ich eine Originaldatei mit dem Namen test.csv einlesen, heißt die erstellte Datei anschließen: test.csv_k.csv, die Datei sollte aber nur test_k.csv heißt, wie kann ich das Problem beheben


Du musst die Endung .csv aus Dateinamen vorher entfernen, dazu STRREP oder REGEXPREP benutzen

Code:

 function convert2csv(filein)
  % convert2csv(filein); filein: Dateiname bzw. Pfad;
  % Konvertiert eine "falsche" .csv-Datei in ein korrektes .csv-Format
  % Ändert zuerst das Komma der Zahl in einen Punkt
  % Ändert das Trennzeichen der Spalte von einem Semikolon in ein Komma
 
   fin=fopen(filein, 'r');
   [a,b,c,d,e]=textread(filein,'%s%s%s%s%s','headerlines',1);
    A_k=strrep([a,b,c,d,e],',','.');%Tauscht Komma in Punkt (Kommazahl)
    A_neu=strrep(A_k,';',',');%Tauscht Semikolon in Komma (Trennzeichen Spalte)
    B=str2double(A_neu);
    dlmwrite([strrep(filein,'.csv','') '_k.csv'],B,',')
    fclose(fin);
end

 


"Kann man den Neu erstellten Namen (test_k.csv) irgendwie direkt weiterverwenden
quasi um damit zu arbeiten, ohne damit ich den neuen Namen immer von Hand in meinem Skript eingeben muss? "
Hier kannst so ähnlich verfahren, oder deine Funktion convert2csv kann auch den neuen Namen gleich zurückgeben
Private Nachricht senden Benutzer-Profile anzeigen
 
equi
Themenstarter

Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 21.03.2017, 09:09     Titel:
  Antworten mit Zitat      
Vielen Dank denny für die schnelle Antwort Smile

Funktioniert einwandfrei Smile

Hatte zwar mal REGEXPREP versuch aber dann vermutlich wohl falsch angewendet Rolling Eyes

Hab jetzt meine Funktion einen Namen zurück geben lassen Funktioniert auch Smile

Beide Probleme aufeinmal gelöst Smile

Vielen Dank
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.