MATLAB如何调用低级函数读取数据:fscanf函数

2020年12月8日15:30:58MATLAB如何调用低级函数读取数据:fscanf函数已关闭评论

MATLAB如何调用低级函数读取数据:fscanf函数

fscanf函数用于从用户定义的文件中读取格式化的数据,调用格式如下:

array=fscanf(fid,format)

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

其中,fid是打开文件的指针,format是控制数据读入格式的字符串,array是接收数据的数组,count返回读取数据的数目。

可选参数size定义了数据读取的数目。对于这个参数有几点说明:

n:读取n个数值,array是一个列向量,包含n个从文件中读取的数值;

inf:读至文件结束,array是一个列向量,包含文件中的所有数据;

[n,m]:读取n行m列数据,array是一个格式为n×m的数组。

格式定义字符串定义了数据的读取格式,它包含通常的格式定义字符。fscanf函数首先比较文件读取的数据与格式定义字符的类型,如果两个类型相符合,fscanf函数将实现格式转换,并将这个数值保存至输出数组中。fscanf函数重复这样的操作,直至按照函数要求读取完毕。

为了验证fscanf函数的功能,读取文件名为“x.txt”的文件,此文件包含的数据显示如下:

10.00 20.00

30.00 40.00

(1)如果使用下面的命令进行读取:

[z,count]=fscanf(fid,'%f');

那么,z数组中保存了一个列向量,count得到4。

(2)如果使用下面的命令进行读取:

[z,count]=fscanf(fid,'%f',[2 2]);

那么,z数组中保存了一个列向量,count得到4。

(3)如果使用读取整数格式的字符“%d”:

[z,count]=fscanf(fid,'%d',inf);

那么,z数组中保存了一个列向量10,count得到1。这是因为当数值10.00被读取时,10.00并不是整数,而是包含了小数部分,所以fscanf函数停止了读取操作。

(4)如果使用下面的命令读取文件:

[z,count]=fscanf(fid,'%d.%d',[1 inf]);

那么,z将会是一个行向量[10 0 20 0 30 0 40 0],count变量中保存8。得到这个结果的原因在于格式字符串中包含一个“.”符号,与数据文件之中的小数点相匹配。

(5)如果使用读取字符格式的字符“%c”:

[z,count]=fscanf(fid,'%c');

那么,z数组将会是一个保存了文件中每个字符的行向量,包含所有的空格以及换行字符。count变量的值与读取的字符个数相等。

(6)如果使用读取字符串格式的字符“%s”:

[z,count]=fscanf(fid,'%s');

那么,z将是一个行向量包含20个字符10.0020.0030.0040.00,count变量的数值是4。因为字符串数组在读取时将会省略掉空格和换行,于是获取了4个分离开的字符串。

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。