Verfasst am: 18.08.2010, 12:31
Titel: Zeilen und Spalten weise aus txt importieren
Hi,
wie so oft meldet sich ein kompletter Noob bei euch . Und es geht auch noch um das leidige Problem des Daten einlesens. Hab schon viel gelesen jedoch nich das optimale gefunden.
Folgendes Prob:
.txt Datei mit 10 Zeilen welche ich mit importdata einlese. Die ersten Zeilen lese wie im Code angegeben ein. Ab der 11. Zeile geht mein Problem los. und zwar soll ab der 11. Zeile nur noch alles Spaltenweise importiert werden. Sollte dann auch unter z.B: datensatz.nm mportiert werden.
for i=1:length(daten)% ¸ber alle zeilen von "daten"
zeile = daten{i};
if(findstr(zeile,'Sample IntegrationTime'))<5
lz = findstr(zeile,'');
datensatz.SampleIntTime=str2num(zeile(lz+1:length(zeile)));
elseif(findstr(zeile,'Sample AverageNumber'))==1
lz = findstr(zeile,':');
datensatz.SampleAverage=str2num(zeile(lz+1:length(zeile)));
end end
datensatz.messpunkte=messpunkt;
wenn du genauer erklärst was du suchst wie gelesen werden soll, vlt ein richtiges beispiel aud der hochgeladenen datei, dann hast du gute chancen eine antwort zu bekommen
ich habe Deinen Code jetzt nicht analysiert, aber einen allgemeinen Tipp kann ich Dir geben:
Ich würde alle relevanten Zeilen einlesen und mir danach die benötigten Elemente rauspicken. Denn ein spaltenweises Einlesen halte ich grad für weniger umsetzbar.
Suche im Forum mal nach [edit] textscan, fscanf etc. In der Matlab-Hilfe findest Du bei diesen Funktionen auch Verlinkungen zu ähnlichen Einlese-Modi.
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke
Zuletzt bearbeitet von yankemen am 19.08.2010, 13:43, insgesamt einmal bearbeitet
for i=1:length(header)% ¸ber alle zeilen von "daten"
zeile = regexprep(header{i},'\s+',' ');
name = char(regexp(zeile,'^\w+ \w+','match'));
feld_name = regexprep(name,'\s+','');
if ~isempty(strfind(name,'TimeStamp'))
datensatz.(feld_name) = strtrim(regexprep(zeile,name,''));
else
datensatz.(feld_name) = sscanf(zeile,sprintf('%s %%f',name));
end end
datensatz.messpunkte=daten;
for i=1:length(header)% ¸ber alle zeilen von "daten"
zeile = regexprep(header{i},'\s+',' ');
name = char(regexp(zeile,'^\w+ \w+','match'));
feld_name = regexprep(name,'\s+','');
if ~isempty(strfind(name,'TimeStamp'))
datensatz.(feld_name) = strtrim(regexprep(zeile,name,''));
else
datensatz.(feld_name) = sscanf(zeile,sprintf('%s %%f',name));
end end
datensatz.messpunkte=daten;
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.