matlab如何读取一行数据,从而进行处理?

如题所述

以取filein中的第line行写入fileout中的程序为例:

1、首先输入下方的代码:

function dataout=dataread(filein,fileout,line)

fidin=fopen(filein,'r');

fidout=fopen(fileout,'w');

nline=0;

while ~feof(fidin) % 判断是否为文件末尾

tline=fgetl(fidin); % 从文件读行

2、然后输入下方的代码:

nline=nline+1;

if nline==line

fprintf(fidout,'%s\n',tline);

dataout=tline;

end

end

fclose(fidin);

fclose(fidout);

3、然后这样就完成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-14
txt文件如下,%在txt里是顶格写的
1
2 %A
3 11.2 222.5 3000
4
5 %B
6 100 200 300
7
8
9 %C
10 4800000 500000 60000000
format long %让matlab显示出很大的数比如 6000000000011.8,不会忽略掉11.2
fidin=fopen('123.txt'); %打开文件
while ~feof(fidin) %判断是不是文件末尾
tline=fgetl(fidin); %读取一行,注意,读文一行后,光标就会自动到下一行
if isempty(tline) %判断是不是空行
continue
end
switch tline(2) %对不是空行的判断这一行的第二个字符
case 'A' %如果是A的情况
tline=fgetl(fidin); %读取下一行的数据
str=tline; %先把这一行变为字符串
sline=sscanf(str,'%f',3); %读取字符串中的数据,最多读3个,三个字符自动转为数字类型
M=sline; %赋值给M
case 'B' %一下类似
tline=fgetl(fidin);
str=tline;
sline=sscanf(str,'%f',3);
M1=sline;
otherwise
tline=fgetl(fidin);
str=tline;
sline=sscanf(str,'%f',3);
M2=sline;
end
end
fclose(fidin);
a=M(1)+M2(3);
disp(a);
这里让11.2+60000000 结果是60000011.2
第2个回答  2014-05-30
不知道你这个数据是什么东西,假设这是X矩阵
取某一行数据的命令是X(i,:),表示取第i行数据追问

数据是电子水准仪数据文件,我想读取其高程值Z,其余都可以不要。

追答

不管是什么数据,导入到MATLAB后就是X矩阵了,想要哪部分数据都行

本回答被提问者采纳
相似回答