2016-09-20 22 views
0

這裏讀特定行是我的數據文件看起來像:如何用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' 是指不同的浮點數,和1,2,3,...,1000也是文件的一部分,佔據各一行。我想要做的是,我需要從時間步1到1000的循環,並且在每個步驟中,我需要讀取它下面的3列浮點數塊作爲三個列向量。然後我繼續下一個時間步,閱讀下面的方塊,直到我完成了所有的閱讀。

我怎麼能用Matlab讀這個文件?總之,我想要做的是讀第2行到第6行作爲矩陣,然後將第8行到第12行作爲矩陣,然後將第14行到第18行作爲矩陣,等等......

謝謝!

+0

如果這是你只需要導入一次的東西,你可能可以使用內置的數據導入工具而不是腳本來做到這一點 –

+0

所以,我正確理解你的數據文件的標籤與每隔6行是下一個數字? – user1543042

+0

基本上我想要做的就是讀第2行到第10行作爲矩陣,然後下一次從第12行到第20行作爲矩陣,然後是22到30矩陣,依此類推。 – Damien

回答

1

如下您可以閱讀文本文件:

%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); 

參考https://www.mathworks.com/help/matlab/ref/fscanf.htmlfscanf文檔。