matlab fscanf用法
matlab中的fscanf的用法如下:
A=fscanf(fid,format)
[A, count]=fscanf(fid,format,size)
[A, count]=fscanf(fid,format,size)
個人感覺用的最多的是 這樣的形式:
data = fscanf(fid,format,size);
期中data為讀取內容的陣列,他的大小由size決定,即如果size為2行3列,data即為【2,3】,如果size為[4 inf],則data為4行n列,而且data資料先按列填滿4個,之後再換一列。size是一個[m n]的向量,
m為行,n為列(注意,這裡讀取的順序是按列優先排列的,不明白的話可以看
下面的例子),若n取inf表示讀到檔案末尾。fid為fopen開啟檔案的返回值,
format是格式化引數(像printf、scanf)。
format包含txt內所有型別,%*d表示省略整型資料,例如
0.00 good 2
0.10 bot 3
1.02 yes 4
1.00 yes 5
1.00 yes 6
1.00 yes 3
1.00 yes 5
1.00 yes 6
1.00 yes 1
1.00 yes 3
1.00 yes 7
1.00 yes 3
1.00 yes 2
fid = fopen('E:\temp\test.txt', 'r');
a = fscanf(fid, '%f %*s %d ', [2 inf]) % It has two rows now.
fclose(fid)
解釋下:第一列和第二列之間有四個空格,format也要四空格哦!有三列即三種型別,要有三種format,%*s即為不輸出字串型。結果為:
a =
Columns 1 through 11
0 0.1000 1.0200 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
2.0000 3.0000 4.0000 5.0000 6.0000 3.0000 5.0000 6.0000 1.0000 3.0000 7.0000
Columns 12 through 13
1.0000 1.0000
3.0000 2.0000
fid = fopen('E:\temp\test.txt', 'r');
a = fscanf(fid, '%f %*s %*f ', 5) % It has two rows now.
fclose(fid)
a =
5.0000
0.1000
1.0200
1.0000
1.0000
舉個小例子2:
路徑+檔名:d:\moon.txt
內容:13,1,3.4
3,2.1,23
1,12,2
4,5.4,6
現在為了讀取moon中的資料存在一個陣列裡,可以用如下方法
fid=fopen('d:\moon.txt');
data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%這裡得用單引號
fclose(fid);
這時data中的資料如下:
13 3 1 4
1 2.1 12 5.4
4 23 2 6
通常我們可能需要用引用陣列中的某行或某列來畫圖,方法是data(m,:) 或者 data(:,n),即取得data陣列的第m行或第n列。