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

Eingelesene Daten ändern

 

Mike87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2010, 19:14     Titel: Eingelesene Daten ändern
  Antworten mit Zitat      
Hihi,

ich habe ein kleines Problem, wie wohl einige die sich hier melden (=

Und zwar möchte ich Daten aus einer relativ großen csv-Datei mit 2 Spalten einlesen und im weiteren verarbeiten.
Bevor ich das machen kann muss ich aber bestimmte Einträge erst abändern.

Es kommt zwischendurch ab und zu vor das ich keine Signale meiner Sensorik erhalte. Das sieht dann in etwa so aus wie hier in der dritten Zeile.


20494 164
20495 144
Nummer Wert
931 164
932 68


Eigentlich kein Problem, ich öffne die Datei, suche mir entsprechende Zellen und ändere diese ab und kann sie anschließend ganz normal via 'dlmread' einlesen. Mit der zweiten Spalte (Abfrage ob das Wort 'Wert' eingetragen ist) funktioniert das auch alles soweit.
Jedoch habe ich bei der ersten Spalte das Problem das sich hier vor dem Wort 'Nummer' noch ein tab -Trennzeichen in Form eines Quadrates befindet, welches hier leider nicht mitkopiert wurde.
Sobald diese Zeile erreicht wird erkennt meine Funktion strrep das Wort ' Nummer' durch dieses Zeichen nicht. Ich kann das tap-Zeichen leider auch nicht in die Abfrage mit rein kopieren.

Code:
fid0 = fopen('datei.csv','r');
fid1 = fopen('temp_datei.csv','w');
fwrite(fid1,strrep(char(fread(fid0))', ' Nummer', '0'));
fwrite(fid1,strrep(char(fread(fid0))', 'Wert', '0'));
fclose(fid0);
fclose(fid1);

zeit = dlmread('temp_datei.csv', ';', 'A1..A73190');
werte = dlmread('temp_datei.csv', ';', 'B1..B73190');


Ich habe nun schon ein wenig rumprobiert, eine Variante von mir war die das ich einfach nur die Zeichen 2-7 verwende, also das Wort 'Nummer' ohne das vorangestellte tab-Symbol.

Code:
fid0 = fopen('datei.csv','r');
fid1 = fopen('temp_datei.csv','w');
c1 = char(fread(fid0, 1))';
c2 = char(fread(fid0, 6))';
fwrite(fid1,strrep(c2, 'Nummer', '0'));
fclose(fid0);
fclose(fid1);


Jedoch habe ich hierbei das Problem das ich nur die erste Zelle der csv-Datei prüfe.

Wie kann ich es realisieren alle Zellen nach dem Wort Nummer abzufragen oder meinetwegen auch nur nach dem 'N' an zweiter Stelle jeder Zelle, das würde mir auch völlig ausreichen, ich muss nur diese Inhalte für die spätere Auswertung geändert haben.

Eine andere Möglichkeit die mir in den Sinn kommt wäre auch sobald die Zeichenkette 'Wert' in der zweiten Spalte erkannt wird, diese zu ändern und den dazugehörigen Wert der ersten Spalte auch zu ändern, da diese beiden immer zusammen vorkommen. Jedoch habe ich nicht wirklich einen Plan wie ich das umsetzen könnte.

Vielleicht mache ich es auch viel zu umständlich und ihr könnt mir einen anderen Rat geben. Bin für alles offen (=

Vielen Dank im Voraus,

Mike[/code]


Mike87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2010, 15:16     Titel:
  Antworten mit Zitat      
Hm, kann mir keiner weiterhelfen
Question
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.05.2010, 17:53     Titel:
  Antworten mit Zitat      
Hallo
Du hast in falschen Forum gepostet, bis jetzt hat dein Problem nichts mit Regelungstechnik zu tun. Es schreckt schon einige den ab, Beitrag zu lesen, weil nicht jeder kennt sich mit Regelungstechnik aus.
so vielleicht:
Code:

fid0 = fopen('bsp6.txt','r');
fid1 = fopen('temp_datei.csv','w');
c    = fread(fid0,'*char')';
fwrite(fid1,regexprep(c, 'Nummer|Wert', '0'));
fclose(fid0);
fclose(fid1);
 
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.