matlab的fscanf函数

上传人:平*** 文档编号:14759667 上传时间:2017-11-02 格式:DOC 页数:6 大小:37.65KB
返回 下载 相关 举报
matlab的fscanf函数_第1页
第1页 / 共6页
matlab的fscanf函数_第2页
第2页 / 共6页
matlab的fscanf函数_第3页
第3页 / 共6页
matlab的fscanf函数_第4页
第4页 / 共6页
matlab的fscanf函数_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《matlab的fscanf函数》由会员分享,可在线阅读,更多相关《matlab的fscanf函数(6页珍藏版)》请在金锄头文库上搜索。

1、matlab 输入 fscanf 函数matlab 调用文本文档的数据,是相当简洁的。但是,目前不管是网络上,还是各类教材说的都很简陋。有时候抱着本书看了 n 次,仍然不知道如何下手。我最近遇到这样一个问题。又一个数据文件,当然后缀名是可以更改的,可以是 txt 也可以是 dat。文件不是帮助中的简单数据形式,仅有一个类似矩阵般的数据排列。为了方便运算,数据体中一定要有文字注释,并且,数据分很多中,有渗透率的,也有井的。数据长度不同。而用 matlab中的 load 要求必须要用行长度相同的数据。比如说:1 2 3 4 42 3 4 5 6这样的数据很容易读入,用 load 非常合适,文字注释

2、部分前面加上%,matlab 就不会读文字行。但是我的数据是类似下面的数据11 11 3 1.00 长度50 50 50 50 50 50 50 50 50 50 5050 50 50 50 50 50 50 50 50 50 50纵向4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.004.004.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.004.004.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.004.004.00 4.00 4.00 4.00 4.0

3、0 4.00 4.00 4.00 4.00 4.004.004.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.004.004.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.004.004.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.004.004.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00 4.00这样的话,如果想用 load 函数,就要把这个数据分成好几份,分别调用,这对于程序的应用非常不便。于是我就考虑用 fscan

4、f 函数,这个函数的应用与 c+中有几分相似,呃,坦诚的说是非常相似,但是好像不支持换行,比如说遇到注释行然后跳过去,他不支持。也许支持,但我不会,_用 fscanf 是可以一个一个读入数据,也可以一下读入一个二维数组。非常方便。我找了个中文的帮助资料,但是是繁体的,不过大家凑活看吧。如果遇到注释行,用下面的语句 fscanf(fid,%6s,1); ,其中的 6 代表读入的字码长度。本来想多写点,但是好累,休息会,编程不是人干的活。正式之读取资料函数如下之格式:A=fscanf(fid,format)A, count=fscanf(fid,format,size) A, count=fsca

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

6、ze 则是决定读入之资料量,可用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

7、則代表雙精度浮點值。 以 %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 =

8、 0 0.3142 0 0.3142 0.6283 0.9425 0.6283 0.9425 1.2566 1.5708 1.2566 1.5708 1.8850 2.1991 1.8850 2.1991 2.5133 2.8274 2.5133 2.8274 3.1416 0 3.1416 0 0.3090 0.5878 0.3090 0.5878 0.8090 0.9511 0.8090 0.9511 1.0000 0.9511 1.0000 0.9511 0.8090 0.5878 0.8090 0.5878 0.3090 0 0.3090 0 fscanf 功能简介从文本文件中读取数据

9、 版本支持7.8.0.347 (R2009a) 语法A = fscanf(fileID, format)A = fscanf(fileID, format, sizeA)A, count = fscanf(.) 描述A = fscanf(fileID, format)从一个文本文件中数据列顺序读取并转换成数组。要转换,fscanf 使用的格式和编码方案与该文件相关联。要设置的编码方案,使用 fopen。该 fscanf 函数重新应用在整个文件的格式,并在最终的文件标记位置的文件指针。如果 fscanf 无法比拟的格式的数据,内容是:只有那部分分为 A,停止处理 。 A = fscanf(fil

10、eID, format, sizeA)读入一个 sizeA 元素和最后一个元素的位置后,文件指针读取。 sizeA 可以是整数,也可以有表格m,n。A, count = fscanf(.) fscanf 成功读取,返回数字的元素。 输入参数fileIDFOPEN 获得的整数文件标识符。 format字符串括在单引号中,描述每个元素的类型(场) 。包括一个或更多下列说明符。 字段类型说明符详情%d 10进制%i确定进制的值。默认为进制为10。如果最初的数字是为0x或0X,这是进制为16。如果最初的数字是 0,这是进制8。Integer, signed64位值,进制为10,8,或16%ld or

11、%li Matlab中文论坛%u 10进制%o 8进制%x book.iLoveM16进制Integer, unsigned %lu, %lo, %lx 64位值,进制为10,8,或16%f浮点字段可以包含以下内容(大小写不敏感的话) :Inf 文件,- Inf 文件,南,或南。%e浮点字段可以包含以下内容(大小写不敏感的话) :Inf 文件,- Inf 文件,南,或南。浮点数%g浮点字段可以包含以下内容(大小写不敏感的话) :Inf 文件,- Inf 文件,南,或南。%s 阅读系列的字符,直到找到空白。%c阅读任何单个字符,包括空格。(要读多个字符,指定字段的长度。)字串%. 只读括号中的字

12、符,直到第一个非匹配字符或空格。Simulink 与信号处理可选:要跳过字段,插入一个星号(*后百分号( )。例如,要跳过整数,指定*D要指定一个字段的最大宽度,插入一个数字。例如,10C 条读取时间刚好10个字符,包括空格。若要跳过特定格式的字符集,插入文字字符。例如,要读只能从圆周率= 3.14159浮点数字,指定一个 格式 PI=f 的。sizeAA:在输出数组指定维度下列形式之一: inf 阅读该文件的末尾。 (默认) n 阅读最多 n 个元素。 m,n 阅读最多 M* n 个元素的列顺序。 n 可以是 inf,但 M 却不能。 当格式包括了s,A 可以包含超过 n 列。 N 是指元素

13、,而不是字符。输出参数A一个数组。如果格式包括:只有数字说明符,一个是数字。如果格式包括只有64位有符号整数说明符,一类是int64。同样,如果格式包括只有64位无符号整数说明符,是一类 uint64。否则,一类是double。如果 sizeA 是 inf 或 n,则 A 是一个列向量。如果输入包含比 sizeA 元素少,与MATLAB 的垫一个零。 只有字符或字符串说明符( C 或s) 中,A 是一个字符数组。如果 sizeA 是 inf 或 N,A 是一个行向量。如果输入包含比 sizeA 字符较少,MATLAB 的垫带有字符(0)。综合运用数字和字符说明符,一个是数字,类 double。

14、 MATLAB 的每个字符转换为等价的数值。即使发生这种转换的格式明确跳过所有的数字值(例如,一个格式* ds的)。 如果不能匹配 MATLAB 的输入格式,并包含数字的格式和字符说明符,A 可以是数字或字符。一个关于 MATLAB 的价值取决于前处理停止读取类。countfscanf 读入 A 元素的数目 应用举例阅读文件的内容。 fscanf 重用整个文件的格式,所以你不需要控制回路: % Create a file with an exponential tablex = 0:.1:1;y = x; exp(x);fid = fopen(exp.txt, w);fprintf(fid,

15、%6.2f %12.8fn, y);fclose(fid);% Read the data, filling A in column order% First line of the file:% 0.00 1.00000000fid = fopen(exp.txt);A = fscanf(fid, %g %g, 2 inf);fclose(fid);% Transpose so that A matches % the orientation of the fileA = A; 跳过特定字符的文件,并只返回数字值: % Create a file with temperaturestempst

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号