你这个是保持成.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 %显示结果
x
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作为高级语言主要区分的是:数据,符号,矩阵(向量),原胞数组,逻辑变量等之间的关系。所以你的数据里有整型和浮点数是没有关系的。