Verfasst am: 18.03.2014, 15:31
Titel: Zellen bearbeiten in einer Tabelle
Hallo Leute.
ich hatte in einem anderen Thread schonmal gefragt wie ich Daten einlese. Jedoch hat sich herausgestellt, dass es leider doch falsch war.
Und zwar funktioniert das nur, wenn ich die Excel Datei öffne, speicher und schließe.
Denn meine .csv-Dateiem sind wie folgt abgespeichert:
"1,4634";"3,47895";"2,4789"
Wenn ich die Daten mit Excel einmal öffne, speicher und schließe wird daraus:
1,4634;3,47895;2,4789
Letzteres lässt sich einlesen.
Das obere kann ich auch einlesen mit textread
habe ich eine Tabelle mit nan, weil die X Werte alle so heißen : "1,4634" "3,47895" "2,4789"
Gibt es eine Möglichkeit die " zu entfernen?
Code:
% function Untitled3(File) format long
% Generate a new file named Oldfilename_Modified.ending. In the new File all % ',' are changed to '.' Needs a full datapath and filename as input.
Name=textscan(File, '%s%s','delimiter','.');
NewFile=strcat(Name{1}, '_Modified.',Name{2});
copyfile(File, NewFile{1});
file = (memmapfile(NewFile{1},'Writable',true));
Bei textscan musst du erst eine Datei (deine csv) mittels fopen geöffnet haben. Schau dazu bitte mal in die Hilfe zu textscan, dort sind fertige Beispiele enthalten. Denn derzeit ließt du den Dateinamen ein und trennst ihn.
Ersetzen von Zeichen erfolgt mittels strrep o.ä. Auch hier mal die Hilfe befragen.
Du solltest noch beachten, dass Komma von MAtlab nicht als Nullstelle angesehen werden - also musst du hier das Komma gegen Punkt ersetzen.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Meine Idee wäre entweder den " einen Wert Null 0 zuzuweisen oder die " rauszulöschen aus der Tabelle der Variablen.
Nur da haberts an einer Umsetzungsidee. 0 wäre absolut okay weil die Zahlen "wissenschaftlich" aufgeschrieben sind und somi immer nur am Anfang und Ende der Zahlen stehen.
Fehlermeldung
Error using textscan
Buffer overflow (bufsize = 4095) while reading string from
file (row 1809 u, field 1 u). Use 'bufsize' option. See HELP TEXTSCAN.
0E-003";"12,54668E-003";"12,54668E-003";"2,54668E-003";"2,54668E003";"2,54668E-003";"2,54668E-003";"2,54668E-003";"2,54668E-003";"2,54668E-003";"12,54668E-003";"2,54668E003";"2,54668E-003";"2,54668";"2,54668E-0
Error in Untitled4 (line 2)
C = textscan (fileID, '%s');
Zu strrep: Das Problem ist, Matlab erkennt die Variable (wo die eingelesenen Werte drauf sind) nicht als String.
Zu Komma:
Habe ich diesen Code hier gefunden:
Code:
%com2point
function com2point(File) format long
% Generate a new file named Oldfilename_Modified.ending. In the new File all % ',' are changed to '.' Needs a full datapath and filename as input.
Name=textscan(File, '%s%s','delimiter','.');
NewFile=strcat(Name{1}, '_Modified.',Name{2});
copyfile(File, NewFile{1});
file = (memmapfile(NewFile{1},'Writable',true));
Du hast keinen delimter mehr in deinem aufruf, je nach dateigröße kann das durchaus probleme verursachen. Also entweder trennzeichen rein, oder. Puffergröße ändern (siehe anleitung in der fehlermeldung).
teste doch mal, was passiert, wenn du als trennzeichen nicht das semikolon, sondern die anführungszeichen nutzt.
Auf was greifst du zu, welches format hat deine variable? Kennst du die unterschiede zwischem matrix, string, cell usw? Beließ dich bitte mal dazu, wie du auf cell zugreifst, denn die ergebnisse sollten bei dir als cell vorliegen. Kannst du auch im workspace ablesen (steht hinter jeder variablen).
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
So habe noch zwei RÜckfragen, also wenn jemand besonders Spaß dran hat etwas zu verbessern.:
Einmal die Frage, gibt es eine Alternative zu Textread? Weil Textread immer zwei Spalten leer lässt.
Ja, genau daran werde ich arbeiten. Habe jetzt 2 Tage um da Lösungen zu finden.
Nur bei testscan sieht es genauso schlecht aus. Dieses " zerstört immer alles. Matlab versteht das als ein Zeilensprung.
-> Meinte immer zwei leere Zeilen anstatt Spalten.
Hi denny,
ja hatte es am Freitag ausprobiert, hatte nicht geklappt. Habe es heute nochmal ausprobiert, hat funktioniert. :lol:
super damit habe ich es hinbekommen als Erstazfunktion für textread.
Einstellungen und Berechtigungen
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
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.