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‘代替会怎么样呢??谢谢
展开
2个回答
展开全部
%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 填。
用 %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 填。
展开全部
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
由此可见,读数据的时候,从多维数组的水平方向,一个一个读取,传递给新的数组时,从列方向优先。
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
由此可见,读数据的时候,从多维数组的水平方向,一个一个读取,传递给新的数组时,从列方向优先。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询