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

Zeilen und Spalten weise aus txt importieren

 

Sebbel_J
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 18.08.10
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 18.08.2010, 12:31     Titel: Zeilen und Spalten weise aus txt importieren
  Antworten mit Zitat      
Hi,

wie so oft meldet sich ein kompletter Noob bei euch Embarassed . 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.

Bsp 11. + 12. + 13. Zeile:

nm sample sampledark reference .....
928 345.23 3445.23345 1
929 234.23 2342.23423 0

Wie ordne ich z.B. unter nm die darunter stehenden werte zu?
Code:

function datensatz=daten_einlesen_seb_100818(path,file)

% Datei in Maltab einlesen
fullpath=[path filesep file];
 daten =  importdata([fullpath], '\t' );
 
 % Zusatzdaten einlesen
 
 datensatz.dateiame=file;
 datensatz.pfad=path;
 

 
 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;
 
 
% speichername=filename(1:length(filename)-4);
%
% save([filename '.mat'],'datensatz');


Verhaut mich nich wenn ich irgendwas falsch gemaht habe Rolling Eyes

DANKE

Neu Textdokument (2).txt
 Beschreibung:

Download
 Dateiname:  Neu Textdokument (2).txt
 Dateigröße:  608 Bytes
 Heruntergeladen:  371 mal
Private Nachricht senden Benutzer-Profile anzeigen


Frank

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2010, 11:51     Titel: a
  Antworten mit Zitat      
Hi,

wenn du keine antworten bekommst, kanns sein man nicht verstanden hat was du haben willst. ich zumindest.
Zitat:

und zwar soll ab der 11. Zeile nur noch alles Spaltenweise importiert werden. Sollte dann auch unter z.B: datensatz.nm mportiert werden.

Bsp 11. + 12. + 13. Zeile:

nm sample sampledark reference .....
928 345.23 3445.23345 1
929 234.23 2342.23423 0


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

gruss
 
yankemen
Forum-Century

Forum-Century


Beiträge: 104
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
     Beitrag Verfasst am: 19.08.2010, 12:11     Titel:
  Antworten mit Zitat      
Moin Sebbel_J

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.

HTH,
yankemen
_________________

Code:
% Kommentare brauchen ein Leerzeichen nach dem %
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 Smile

Zuletzt bearbeitet von yankemen am 19.08.2010, 13:43, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.08.2010, 13:03     Titel:
  Antworten mit Zitat      
Hallo

wenn die Spaltenanzahl sich nicht ändert und der Header wirklich aus 10 Zeilen besteht, dann wurde ich vorschlagen TEXTSCAN zu benutzen.


ich habe dein Code ganz überschrieben,
es funktioniert mit deinem Beispiel ganz gut:
Code:

function datensatz = daten_einlesen_seb_100818(f_path,f_name)

% Datei in Maltab einlesen
fullpath = fullfile(f_path,f_name);
fid    =  fopen(fullpath, 'r' );
header    = textscan(fid,'%s',10,'delimiter','\n');
header    = [header{:}];
columns   = textscan(fid,'%s',11,'delimiter','\t');

daten     = textscan(fid,'%d %f %f %f %f %d %d %d %d %f %d ','delimiter','\t');
daten     = [daten{:}];
fclose(fid)
 % Zusatzdaten einlesen
 
datensatz.dateiname = f_name;
datensatz.pfad      = f_path;
 

 
 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;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebbel_J
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 18.08.10
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 19.08.2010, 20:55     Titel:
  Antworten mit Zitat      
Riesen Dank den schnellen Support!

Werd das heut Abend ma ausprobieren und mich morgen nochma melden.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebbel_J
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 18.08.10
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 20.08.2010, 11:58     Titel:
  Antworten mit Zitat      
@denny

riesen DANK, hast mir extrem weitergeholfen; kannst mir evtl. nochmal deine schritte beschreiben damit ich sie nachvollziehen kann?

hab zum einlesen der datei den anfang noch etwas umgeändert

Code:

function datensatz = daten_einlesen_seb_100818(path,name)

% Datei in Maltab einlesen
[name path]=uigetfile('L:.....', 'Bitte Datei wählen');
 file=fullfile(path, name);


fid    =  fopen(fullpath, 'r' );
header    = textscan(fid,'%s',10,'delimiter','\n');
header    = [header{:}];
columns   = textscan(fid,'%s',11,'delimiter','\t');

daten     = textscan(fid,'%d %f %f %f %f %d %d %d %d %f %d ','delimiter','\t');
daten     = [daten{:}];
fclose(fid)
 % Zusatzdaten einlesen
 
datensatz.dateiname = name;
datensatz.pfad      = path;
 

 
 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;

 
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 - 2025 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.