2016-09-20 7 views
0

hier zu lesen ist, was meine Datendatei wie folgt aussieht:Wie spezifische Linien mit Matlab

num num num 

num num num 

num num num 

num num num 

num num num 
num num num 

num num num 

num num num 

num num num 

num num num 
num num num 

num num num 

num num num 

num num num 

num num num 

. . .

num num num 

num num num 

num num num 

num num num 

num num num 

'num' bezieht sich auf eine andere Gleitkommazahl und 1,2,3, ..., 1000 sind auch ein Teil der Datei, die jeweils eine Zeile belegt. Was ich tun möchte ist, ich brauche eine Schleife von Zeitschritt 1 bis 1000, und während jedes Schrittes muss ich den 3-Spalten-Gleitkommazahlblock darunter als drei Spaltenvektoren lesen. Dann gehe ich zum nächsten Zeitschritt und lese den Block unten, bis ich alles gelesen habe.

Wie konnte ich diese Datei lesen mit Matlab? Kurz gesagt, was ich tun möchte, ist Zeile 2 bis Zeile 6 als Matrix zu lesen, dann Zeile 8 bis Zeile 12 als Matrix, dann Zeile 14 bis 18 als Matrix und so weiter ...

Danke !

+0

Wenn dies etwas ist, das Sie nur einmal importieren müssen, können Sie dies möglicherweise nur mit dem integrierten Datenimport-Tool tun, anstatt es zu scripten –

+0

So verstehe ich richtig, dass Ihre Datendatei eine Registerkarte mit jedem 6. getrennt Linie ist die nächste Nummer? – user1543042

+0

Grundsätzlich, was ich tun möchte, ist Zeile 2 bis Zeile 10 als eine Matrix zu lesen, dann nächsten Mal Schritt von Zeile 12 bis Zeile 20 als eine Matrix, dann 22 bis 30 Matrix, und so weiter. – Damien

Antwort

1

Sie können die Textdatei wie folgt lauten:

%Open text file 
f = fopen('num.txt', 'r'); 

num_matrices = 1000; 

%Initialize cell array - hold matrices. 
C = cell(num_matrices, 1); 

for i = 1:num_matrices 
    %Read index (to be ignored). 
    idx = fscanf(f, '%f', 1); 

    %Read 6x3 matrix into A 
    A = fscanf(f, '%f', [3, 6])'; 

    %Store matrix in cell array C. 
    C{i} = A; 
end 

fclose(f); 

für fscanf Dokumentation https://www.mathworks.com/help/matlab/ref/fscanf.html finden.

Verwandte Themen