财商书苑
全民财商训练提升,认真负责我们的每句话

matlab fscanf函数:从text文本中读取数据

matlab fscanf函数:从text文本中读取数据

语法

A = fscanf(fileID, format)
A = fscanf(fileID, format, sizeA)
[A, count] = fscanf(参数同上,省略…)

三种使用方法的解释:

A = fscanf(fileID, format)
按照列的方式读文本,即:读完第一行再读第二行,。并将读取到的内容按照format指定的格式保存到数组A中。
fscanf 使用文件的默认编码以及format指定的格式对数据的进行转换。如需要指定文件的编码方式,使用fopen函数。
fscanf 按照format指定的格式重复的读取文件,直到文件结束或遇到format不能匹配的数据而停止(此时fscanf只将已匹配到的数据放入数组A中)。并将文件指针移动到文件末尾。

A = fscanf(fileID, format, size)
读取size指定大小的元素到数组A中,并将文件指针放到最后一个读取的元素之后。(size指定为一个正整数N,表示读取N个匹配format的元素到数组A中【读完第一列再读第二列的顺序哦】,默认为inf无穷大。size指定为[m, n],则表示读取m列,n行到数组A中,n可以去inf但是m不可以)。

[A, count] = fscanf(参数省略…)
将匹配format格式的数据读入数组A中,并将匹配format格式的个数放入到count中。

输入参数详细:

fileID Integer型的文件句柄
format String型 用单引号括起来,描述元素的类型。(如’%d’ 或[‘%d’ ‘%d’]) 

详细如下

类型 表达式 描述(匹配的对象)
Integer, signed(有符号整形) %d 十进制的整数
%i 根据数据自动判断的数据类型。默认为10进制, 

如果开头的数字是
0x或0X则设置为16进制,

果以0开头则设置为8进制。

%ld 或 %li 64位的数值值,表示10、8、16进制。
Integer, unsigned(无符号整形) %u 10进制的数值
%o 8进制的数值
%x 16进制的数值
%lu, %lo, %lx 64位的数值,10进制、8进制、16进制。
Floating-point number(浮点型数值) %f 浮点型数值可以包含以下任意范围(不区分大 

小写):Inf, -Inf, Nan, 或 -NAN。

%e
%g
Character string %s 字符串 

(注意:假设format =’%s’ 那么返回的是一个将所有字符串合并以后的长字符串!!!)

%c 匹配单个字符,包括空白字符。(读取多个字符,需指定长度,如format=’%3c’)
%[…] 匹配括号中包含的字符,直到遇到第一个不匹配的字符或空白。如format=’%[abcdef]’
可选选项: 跳过某些部分,则在%号后面插入一个*号。比如:%*d,表示忽略整数。
指定区域的长度,在%号后插入一个数字。如:%c,表示每次读取10个字符(包含空白字符)。
跳过一些特殊字符集,只需插入这些特殊字符即可。如:从字符串’pi=3.14159’中提取3.14159,则可以设置format=’pi=%f’
size 决定输出到数组A的大小,可以为以下的几种取值格式。
inf 读取整个文件(默认值)
n 至多读取n个元素
[m, n] 按照列的方式读,至多m*n个元素,n可以取inf,m 不可以取无穷大。m为数组A的行数,n为数组A的列数

输出参数详细:

A 数组,格式如下:
仅包含数字表达式,A就是数字型数组。若表达式中含有带符号64位的表达式,那么A就是int64位的数组。类似的,如果表达式中含有无符号整形,那么A就是uint64位的数组。否则,A就是double类型的数组。如果size是inf或n,那么A就是一个列向量。如果输入元素的个数少于size的大小,matlab就用0进行填充
表达式仅包含字符或字符串(%c 或 %s),A就是一个char型数组。如果size是inf或n,A就是一个行向量。如果输入元素的个数小于size,matlab用char(0)进行填充。
既有数字表达式已有字符表达式,那么A就是double类型的数字格式的数组。matlab 会转换每个字符为与其相等的数字。这种转换只有在明确指出需要跳过所有的数值型数值才会发生(例如:format=’%*d %s’)。
如果MATLAB不能匹配format所指定的格式,并且format既包含数字型的表达式又包含字符型表达式,那么A即可能是数字型数组,亦可能为字符型数组,这取决于MATLAB之前读取到内容的类型。
count 决定fscanf可以读入到A中的元素个数。

 

 

赞(0)
未经允许不得转载:财商书苑-全民财商训练提升 » matlab fscanf函数:从text文本中读取数据

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址