Ich habe eine txt mit sehr vielen Spalten (>100) und einigen 1000 Zeilen. Die txt hat einen Header.
Dazu möchte ich jetzt beim einlesen vorher die Header vorgeben und dann dann dazu die gesamte Spalte jeweils einlesen.
Ich dachte mir ich lese die erste Zeile ein den Header.Aber ich müsse das so erreichen das ich jeden Header einzeln dann vorliegen hab, damit ich die Position der Spalte habe.Dann könnte ich ja dazu mit textscan die Daten einlesen.
EDIT: ja die '' kann ich entfernen.
Aber %s %s %f und so wieter das vorgeben geht nicht, da es mehrere 100 Spalten sind..
Code:
searchcol={'Header2,'Header4'};
fid = fopen('test.txt', 'r');
% 1.Header einlesen, pro Header eine cell
header=fgetl(fid);
headercell=textscan(header, '%s',4,'delimiter',';');
% 2. Position der Zielspalten ermitteln
headeridx=[];
for i=1:length(headercell) for j=1:length(searchcol) if(strcmp(headercell{1}{i},searchcol(j)))
headeridx(j)=[headeridx(j),i];
end end end
headeridx
% 3.gezielt Daten-Spalten einlesen fseek(fid,0,'bof'); % Dateizeiger auf Anfang setzen
n=4; % Anzahl der Spalten
i=1;
while(~feof(fid))% Anzahl der Zeilen
data{i,1} = textscan(fid, '%s',n, 'delimiter', ';');
i=i+1;
end
Ich weiß nicht ob der Ansatz überhaupt zielführend ist, weil ich da ja erst die gesamte datei einlesen müsste (was ich umbedingt vermeiden möchte) und dann gezielt erst filtere. Das filtern müsste schon beim einlesen passieren.
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.