Matlab中fscanf的用法

在学习Matlab时,打开文件读取数据使用如下程序data_1=fscanf(fid,'%f,%f,%f',[3,inf]);想问一下,其中的'%f,%f,%f‘是什么意... 在学习Matlab时,打开文件读取数据使用如下程序 data_1 =fscanf(fid,'%f,%f,%f',[3,inf]) ;想问一下,其中的'%f,%f,%f‘是什么意思啊,用'%f,%f‘代替会怎么样呢??谢谢 展开
 我来答
金色潜鸟
推荐于2017-09-23 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5742万
展开全部
%f,%f,%f 这个与 c 语言 格式 定义 是 一样 的, 就是一次 读 3 个 float 型的 数据,
用 %f,%f 就是一次 读 2 个 float 型的 数据。
data_1 是 矩阵,3 * 无限 的 矩阵,
语句里 [3,inf] 就是 循环 读 数据文件,一次读 3 个 数,读到文件 结束符 结束,这样,自动定出 data_1 矩阵 大小。
用'%f,%f‘代替会怎么样呢 --- 数据里的 逗号 会有 问题。
如果 用 空白 分 隔
data_1 =fscanf(fid,'%f %f %f',[3,inf]) ;

data_1 =fscanf(fid,'%f',[3,inf]) ;
结果 一样。
如果是:
data_1 =fscanf(fid,'%f %f',[3,inf]) ;
数据不是 2 的 公倍数(例如是 9个),最后一个元素 用 0 填。
愚听枫07G
推荐于2017-09-13 · TA获得超过216个赞
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:54.9万
展开全部
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_1 =fscanf(fid,'%f,%f,%f',[3,inf]) ;%这里得用单引号
data_2 =fscanf(fid,'%f,%f,%f',[2,inf])
data_3 =fscanf(fid,'%f,%f,%f',[2,2])
fclose(fid);

这时data_1, data_2, data_3分别是一个数组,其内容分别如下:
data_1
13 3 1 4
1 2.1 12 5.4
4 23 2 6
data_2
13 3.4 2.1 1 2 4
1 3 23 12 4,5 6
data_3
13 3.4
1 3
由此可见,读数据的时候,从多维数组的水平方向,一个一个读取,传递给新的数组时,从列方向优先。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式