fscanf的用法以及取得多位数组中的行或列

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

今天帮同学写了一个程序,主要目的是从一个文件中读取数据,然后用这些数据来画图。进过短时间学习,成果如下:

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是一个[m n]的向量,

m为行,n为列(注意,这里读取的顺序是按列优先排列的,不明白的话可以看

下面的例子),若n取inf表示读到文件末尾。fid为fopen打开文件的返回值,

format是格式化参数(像printf、scanf)。

举个小例子:

路径+文件名: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 1

2 5.4

4 23 2 6

通常我们可能需要用引用数组中的某行或某列来画图,方法是data(m,:) 或者data(:,n),即取得data数组的第m行或第n列。

正式之读取资料函数如下之格式:

A=fscanf(fid,format)

[A, count]=fscanf(fid,format,size) [A, count]=fscanf(fid,format,size)

這個指令可以自fid所標示的檔案中將其資料依format的格式取出,並置於矩陣A中。这个指令可以自fid所标示的档案中将其资料依format的格式取出,并置于矩阵A中。fid 的定義與前述之fprintf指令相同。fid的定义与前述之fprintf指令相同。另一種型式則增加count與size兩參數。另一种型式则增加count与size两参数。count表示已完成的資料筆數。count表示已完成的资料笔数。而size則是決定讀入之資料量,可用[m,n]表示,表示讀入之資料可填滿mxn的矩陣。而size则是决定读入之资料量,可用[m,n]表示,表示读入之资料可填满mxn的矩阵。其中n 可用inf取代,代表EOF(End of File)。其中n可用inf 取代,代表EOF(End of File)。

此處格式format 之% 符號大體上與fprintf 相同,其中%e,%f,%g 均代表具有浮點之數據。此处格式format 之% 符号大体上与fprintf 相同,其中%e,%f,%g 均代表具有浮点之数据。以%12hd 為例,12 為數值之總位數,d 代表使用整數,其前面所置的文字表示整數的型式,h 代表短整數,l 代表長整數,而lg 則代表雙精度浮點值。以%12hd 为例,12 为数值之总位数,d 代表使用整数,其前面所置的文字表示整数的型式,h 代表短整数,l 代表长整数,而lg 则代表双精度浮点值。這些文字代碼可參考fprintf 指令,其功能相似。这些文字代码可参考fprintf 指令,其功能相似。

fid=fopen('sinx.txt'); A=fscanf(fid,'%g %g',[2 inf]); %最後項為size,表示讀入二列資料,直到檔案底A=fscanf(fid,'%g %g',[2 inf]); %最后项为size,表示读入二列资料,直到档案底fclose(fid);

A=A' A = A = 0 0.3142 0 0.3142 0.6283 0.9425 0.6283 0.9425 1.2566

相关文档
最新文档