matlab如何一个一个从文件读取数据

现在的文件类似于
2
0.5 0.6 0.7
0.8 0.9 1.0
第一行是点的个数,剩下的行是x y z坐标。如果在c语言里面,我们可以
ifstream fin("file.txt")
fin>>num;
for(int i=0; i<num; i++)
{
fin>>array[i][0]>>array[i][1]>>array[i][2];
}
那么在matlab里面我们如何实现上面的代码呢?

你这个是保持成.txt文件,还是excel表格。
下面我的这个回答中,有关于txt格式文件读取的函数。你可以看一下。
http://zhidao.baidu.com/question/360172958047097092.html
关于matlab读取txt文件的讨论网上有很多,你搜一下就出来了。一般最常用的就是fopen和textscan函数。
注意:excel文件的读取,要求电脑上必须要装office。我的电脑用的是wps所以不能使用matlab读取excel文件。追问

谢谢您的回答。我的就是txt文件,每读一行,就给数组赋值。
您能不能将我上面的C代码翻译成matlab。
fid=fopen('file.txt');
%接下来我就不会写了,不知道如何逐行读数据。

追答clear
clc         %清除空间

fileid = fopen('C:\Users\Administrator\Desktop\test.txt')
data_n = textscan(fileid,'%f'); 
data = data_n{1};       %读取数据完毕
n = data(1)             %第一个元素保存点的个数
fclose(fileid)
for index = 1:n 
    x(index) = data((index-1)*3 + 2);   %这里由于坐标排成一排,需要这样分别读取坐标
    y(index) = data((index-1)*3 + 3);
    z(index) = data((index-1)*3 + 4);
end
n   %显示结果

y
z

结果如下:

n =
     2
x =
    0.5000    0.8000
y =
    0.6000    0.9000
z =
    0.7000    1.0000

追问

谢谢姐姐的回答。但其实我的file后面又有很多整形,我看你的代码实际把整个file都读给data了。感觉还是不好啊。难道matlab就没有一个命令使得,一个一个读数据,遇到行末尾就换行吗?谢谢

追答clear
clc         %清除空间
 
fileid = fopen('C:\Users\Administrator\Desktop\test.txt')
n=textscan(fileid,'%f',1);
n = n{1}    %读取点数
spot1_pos = textscan(fileid,'%f %f %f',1);
spot1_pos = [spot1_pos{1},spot1_pos{2},spot1_pos{3}]    %第一个点的坐标
spot2_pos = textscan(fileid,'%f %f %f',1);  
spot2_pos = [spot2_pos{1},spot2_pos{2},spot2_pos{3}]    %第二个点的坐标
fclose(fileid)  %这里我没有采用循环的方式读取,是为了方便观察读取的顺序
%你也可以根据第一个点读到的信息,采用循环的方式读取点的坐标

ps:在matlab中其实不是特别区分数据的类型,只要是数据都可以用%f来读。matlab作为高级语言主要区分的是:数据,符号,矩阵(向量),原胞数组,逻辑变量等之间的关系。所以你的数据里有整型和浮点数是没有关系的。

温馨提示:答案为网友推荐,仅供参考