的輸出試試:
FID = fopen('datafile.dat');
data = textscan(FID,'%f %f %f %f', 'headerLines', 6);
fclose(FID);
data
將是1×4單元陣列。每個單元格將包含一個3x1的double值數組,它們是數據每列中的值。
你可以通過執行data{2}
和data{4}
進入第2和數據的第四列。
隨着你的原代碼,主要的問題是數據文件有標題行,但您所指定的,目前只有。
此外,雖然,你會碰到與時代相匹配的formatSpec數的規範問題。就拿下面的代碼
data = textscan(FID,'%f',4);
其中規定,你將嘗試4次匹配浮點值。請記住,匹配4個值後,textscan
將停止。因此,爲了簡單起見,讓我們假設你的數據文件只包含的數據(即沒有標題行),然後執行該代碼,多次時,你會得到以下結果:
>> FID = fopen('datafile_noheaders.dat');
>> data_line1 = textscan(FID,'%f', 4)
data_line1 =
[4x1 double]
>> data_line1{1}'
ans =
1 2 3 4
>> data_line2 = textscan(FID,'%f', 4)
data_line2 =
[4x1 double]
>> data_line2{1}'
ans =
5 6 7 8
>> data_line3 = textscan(FID,'%f', 4)
data_line3 =
[4x1 double]
>> data_line3{1}'
ans =
9 10 11 12
>> data_line4 = textscan(FID,'%f', 4)
data_line4 =
[0x1 double]
>> fclose(FID);
注意textscan選秀權每次調用它時都會「停止」。在這種情況下,textscan第一三次被稱爲它從數據文件返回一行(在含有4×1 數據的列中單元格的形式)。第四次調用返回一個空單元格。對於你描述的用例,這種格式不是特別有用。
頂部給出的例子應該以一種格式返回數據,這種格式比你想要完成的任務要容易得多。在這種情況下,它會匹配在每個數據行四個浮點值,並將與文本的每一行繼續,直到它再也趕不上這種模式。
看起來你需要''headerLines',6',因爲'[data]'也是一個頭文件。 –