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

Punkte durch Kommas in CSV-Datei ersetzen

 

Bülent
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 11:48     Titel: Punkte durch Kommas in CSV-Datei ersetzen
  Antworten mit Zitat      
Hallo zusammen Smile

ich habe folgenden Inhalt in einer CSV-Datei

19.05.2009 11:44:39; 65.300; 3.751; 6213.0;
19.05.2009 11:44:39; 65.300; 5.630; 4984.2;
19.05.2009 11:44:39; 65.300; 7.514; 4045.0;
...

Ich möchte nun die Punkte durch Kommas ersetzen, wobei das Datum weiterhin seine Punkte beibehalten soll.

Kennt jemand einen Ansatz?

Vielen Dank schon mal Smile

Viele Grüße
Bülent
Private Nachricht senden Benutzer-Profile anzeigen


Jürgen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 11:58     Titel: re
  Antworten mit Zitat      
Guck dir zu diesem Befehl mal die Hilfe an "strrep"
 
Bülent
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 14:02     Titel:
  Antworten mit Zitat      
habe ich,
das problem ist aber nicht dadurch gelöst.

wie gesagt ist es nicht das problem alle punkte durch kommas zu ersetzen!

das problem ist, dass das datum seine punkte erhalten soll,
zudem sind die zahlen und daten (abgesehen von der position) nie die selben
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 14:18     Titel:
  Antworten mit Zitat      
Wenn das ne einmalige Aktion werden soll und es nicht unbedingt in Matlab gemacht werden muss: Excel/OpenOfficeCalc benutzen!

-> csv-Daten importieren, alle Zellen außer dem Datum markieren, suchen&ersetzen, als csv exportieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Bülent
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 14:47     Titel:
  Antworten mit Zitat      
es ist keine einmalige aktion und soll immer mit matlab (über GUI) realisiert werden.

ich bedanke mich für eure vorschläge und möchte nicht unhöfflich sein, jedoch suche ich eine lösung für genau diese problem!

bitte nur noch antworten mit echten lösungsansätzen

vielen dank Smile

bülent
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 19.05.2009, 14:51     Titel:
  Antworten mit Zitat      
In absichtlicher Ignorierung des letzten Kommentars... Ich würde nicht versuchen Suchen / Ersetzen zu programmieren, sondern mit FOPEN - FSCANF - FCLOSE zu operieren.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 14:54     Titel:
  Antworten mit Zitat      
Man hat ja auch schon Menschen gesehen, die versucht haben, Matrizen für ihre Protokolle in Paint zu malen ;)

Du könntest die Daten erstmal per csvread, dlmread, ... einlesen, damit Du sie in einer Matrix gespeichert hast. Dann wandelst Du alles in Strings um, ersetzt in den Spalten mit den Zahlen die Punkte durch Kommas und schreibst das ganze in einer Schleife mit fprintf zurück in die Datei. So ganz grob skizziert - weiß gerade nicht, wie das hinhaut mit den Strings in der Matrix...
Private Nachricht senden Benutzer-Profile anzeigen
 
Bülent
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 15:06     Titel:
  Antworten mit Zitat      
obwohl ich darum gebeten hatte nur noch lösungen hier rein zu schreiben,
werden immer noch mögliche ansätze angeboten Smile

diese kleine aufgabe scheint selbst unter matlab-profis eine 'trickie' aufgabe zu sein Smile

ich bin mal gespannt, wer eine einfache und fertige lösung hier zeigen wird Smile


noch mal danke für die eure ansätze

bülent
Private Nachricht senden Benutzer-Profile anzeigen
 
Bülent
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 15:08     Titel:
  Antworten mit Zitat      
Epfi hat Folgendes geschrieben:
Man hat ja auch schon Menschen gesehen, die versucht haben, Matrizen für ihre Protokolle in Paint zu malen Wink

Du könntest die Daten erstmal per csvread, dlmread, ... einlesen, damit Du sie in einer Matrix gespeichert hast. Dann wandelst Du alles in Strings um, ersetzt in den Spalten mit den Zahlen die Punkte durch Kommas und schreibst das ganze in einer Schleife mit fprintf zurück in die Datei. So ganz grob skizziert - weiß gerade nicht, wie das hinhaut mit den Strings in der Matrix...




strings können nicht in eine matrix geschrieben werden, dafür müsste man zellen verwenden
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 15:11     Titel:
  Antworten mit Zitat      
Bülent hat Folgendes geschrieben:
strings können nicht in eine matrix geschrieben werden, dafür müsste man zellen verwenden


Dann tu das doch.
Private Nachricht senden Benutzer-Profile anzeigen
 
Bülent
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2009, 15:29     Titel:
  Antworten mit Zitat      
Epfi hat Folgendes geschrieben:
Bülent hat Folgendes geschrieben:
strings können nicht in eine matrix geschrieben werden, dafür müsste man zellen verwenden


Dann tu das doch.



Wenn ich eine funktionierende Lösung habe, dann werde ich es hier reinschreiben und den Thread schliessen.

Noch habe ich keine und bitte weiterhin um eine lösung

danke Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 20.05.2009, 09:09     Titel:
  Antworten mit Zitat      
Bülent, Ich denke mal mit so einer Attitüde werden locker 80% der hier aus "Freude an MATLAB" aktiven Menschen diesen Thread sofort wegklicken. Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 20.05.2009, 13:42     Titel:
  Antworten mit Zitat      
Hallo Bülent,

das von Dir vorgestellte Problem ist nicht sehr schwierig. Smile Epfi hat ein mögliches Vorgehen skizziert. Da Du ja nach einem Ansatz gefragt hast (später nach "echten lösungsansätzen"), dachten wir, Du könntest mit einem Ansatz auch etwas anfangen. Cool Bitte verzeih, dass wir Dich wörtlich genommen haben. Smile

Falls Dir die Umsetzung von Epfis Vorschlag zu schwierig ist, kannst Du diesen Code hier verwenden. Dafür musst Du ihn markieren, kopieren und in das Matlab Command Window bzw. in Dein m-File im Editor einfügen. Achtung: Der Dateiname muss noch an Deine Datei angepasst werden! Falls Du die Daten nicht in eine neue Datei schreiben, sondern die alte Datei überschreiben willst, müssen die beiden Dateinamen in Zeile 1 und Zeile 11 übereinstimmen.

Code:
fid = fopen('DeineDatei.csv');
C = textscan(fid,'%s %s %s %s','delimiter',';');
fclose(fid);

[Datum,Wert1,Wert2,Wert3] = C{:};

Wert1_neu = strrep(Wert1,'.',',');
Wert2_neu = strrep(Wert2,'.',',');
Wert3_neu = strrep(Wert3,'.',',');

fid = fopen('DeineNeueDatei.csv','w');
for l = 1:length(Datum)
    fprintf(fid,'%s; %s; %s; %s;\n',Datum{l},Wert1_neu{l},Wert2_neu{l},Wert3_neu{l});
end
fclose(fid);


Wenn Du noch weitere Fragen hast, kannst Du die hier gerne stellen. Programmieraufträge wie diesen hier solltest Du aber in Zukunft in der entsprechenden Rubrik posten. Normalerweise wird dafür eine Gegenleistung angeboten. Da Du neu hier bist, verzichte ich mal auf mein Honorar. Very Happy

Herzliche Grüße
Bijick

PS: Ich dachte auch erst an Wegklicken...
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Bülent
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2009, 11:50     Titel: Funktioniert leider immer noch nicht ganz
  Antworten mit Zitat      
Hallo,

danke für den Code.

Ich weiss nicht, ob ich mich vielleicht unglücklich ausgedrückt habe.
Wenn ich jemanden verärgert, oder vielleicht sogar beleidigt haben sollte, dann entschuldige ich mich hiermit dafür.
Meine Absicht war es jedenfalls nicht!

Der Obige Code funktioniert nicht, es kommt folgende Fehlermeldung:



??? Error using ==> textscan
Invalid file identifier. Use fopen to generate a valid file identifier.

Error in ==> Punkte_in_Kommas at 4
C = textscan(fid,'%s %s %s %s','delimiter',';');



Bis dahin
Bülent
Private Nachricht senden Benutzer-Profile anzeigen
 
Bülent
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2009, 14:45     Titel:
  Antworten mit Zitat      
Bijick

dein ansatz ist ganz gut, den ich als grundlage nun nutze.
dein code ist aber an einigen stellen noch nicht ganz fehlerfrei

statt 'newline' steht in der csv nun ein kästchen und es steht alles nebeneinander.

ich denke, ich werde es nun zurecht basteln können.

ich werde dennoch eine fertig lösung hier her posten, damit andere vielleicht noch nutzen daraus ziehen können.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.