2016-11-19 1 views
0

Ich habe aufeinander folgende .dat-Dateien, die ich in einer einzigen Matrix durch vertikale Verkettung der Dateien lesen und eingeben möchte. Der Code, den ich bisher verwendet habe, funktioniert gut für einfache numerische Dateien mit nur Tabs als Trennzeichen.überspringen Header in nicht-rechteckigen Matrix

import=[]; 
data=[]; 
for i = 1:32 
    data1=[import dlmread(sprintf('%d.dat',i))]; 
    data=vertcat(data, data1); 
    clear data1; 
end 

und ich nehme den richtigen Ausgang in die Datenmatrix. Aber mein Dateiformat ist wie folgt:

       first second  third 

0 11/15 08:57:42.000   54   67   82 
1 11/15 09:48:47.010   49   32   31 
... 

Wie Sie sehen Ich habe drei Trennzeichen (: \ t /) und Header nur in den letzten drei Spalten, die im wesentlichen der, die wir lesen möchten, dass ich bin soll eine Matrix:

54   67   82 
49   32   31 
... 

ich versucht die Delimiter in die dlmwrite Spezifizieren und wie viele Zeilen/Spalten zu überspringen, aber ein Fehler auftritt in sprintf ('delimiter = sprintf (delimiter);% Interpretieren \ t (falls erforderlich) '). Hat jemand eine Idee, wie man das macht?

UPDATE:

gelang es mir, ein wenig weiter

data=[]; 
for i = 1:32 
    filename = sprintf('%d.dat',i); 
    data1=importdata(filename);%creates a cell array 
    data2=cell2mat(data1(3:end,:));%converts it to char 
    %The data, without the header, start from the 3rd row. 
    data=vertcat(data, data2); %concatenate vertically all the files  
    clear data1; clear data2; 
    end 
%the data 
a1=str2num(data(1:end,20:25));%the first data column is in char 20-25 
a2=str2num(data(1:end,30:35));%the second data column is in char 30-35 

Die Sache zu bekommen, ist, dass der letzte Teil zu viel Zeit in Anspruch nimmt, mehr als eine Stunde vergangen ist, bis ich es manuell gestoppt. Kennt jemand einen einfacheren und schnelleren Weg dies zu tun?

+2

Bitte geben Sie die tatsächliche Fehlermeldung an. – excaza

+0

@excaza Ich habe bereits in meinem ursprünglichen Beitrag: '' delimiter = sprintf (delimiter); % Interpret \ t (falls erforderlich) '' – user148939

+2

Das ist keine Fehlermeldung. – excaza

Antwort

0

ich es geschafft, mich zu lösen dies, damit ich es hier posten für die Zukunft:

for i = 1:32 
    filename = sprintf('%d.dat',i); 
    data1 = dlmread(filename,'',2,3);%start from row 2, headercolumn 3 
    data=vertcat(data, data1); 
    clear data1; 
end 

meine Datenspalten nun die Datenmatrix enthält nur und es läuft in wenigen Sekunden.