第2个回答 2019-10-25
下面这个函数是取filein中的第line行写入fileout中的程序,如果想实现取特定几行,只要稍微修改一下就可以。
function
dataout=dataread(filein,fileout,line)
fidin=fopen(filein,'r');
fidout=fopen(fileout,'w');
nline=0;
while
~feof(fidin)
%
判断是否为文件末尾
tline=fgetl(fidin);
%
从文件读行
nline=nline+1;
if
nline==line
fprintf(fidout,'%s\n',tline);
dataout=tline;
end
end
fclose(fidin);
fclose(fidout);
%%%%%%%%%%%%%%%%%%%%%%%%%%
调用格式:dataout=dataread(filein,fileout,line)
如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据
a=textread('ll.txt');
t=a(1:43,4:10);
1:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的matlab没有textread函数,直接从mathworks网站下载就行。
根据txt文档不同种类介绍不同的读取数据方法
一、纯数据文件(没有字母和中文,纯数字)
对于这种txt文档,从matalb中读取就简单多了
例如test.txt文件,内容为“17.901
-1.1111
33.045
17.891
-1.1286
33.045
17.884
-1.1345
33.045”
可以在command
window中输入load
test.txt
,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import
data....../next/finish
也可产生一个叫test的数据文件。
二、中英文和数据如test1.txt
vib.hit.edu.cn
1
11
111
1111
2
22
222
2222
3
33
333
3333
4
44
444
4444
5
55
555
5555”
这样的文件怎么读入数据呢?
方法有多种,现举两个比较简单实用的。
方法一:
file/import
data....../next/finish
>>
whos
Name
Size
Bytes
Class
data
5x4
160
double
array
textdata
4x1
300
cell
array
Grand
total
is
54
elements
using
460
bytes
>>
data
data
=
1
11
111
1111
2
22
222
2222
3
33
333
3333
4
44
444
4444
5
55
555
5555
>>
textdata
textdata
=
方法二:
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
这里%s的个数和[a1,a2,a3,a4]对应。
>>
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
a1
=
'1'
'2'
'3'
'4'
'5'
a2
=
'11'
'22'
'33'
'44'
'55'
a3
=
'111'
'222'
'333'
'444'
'555'
a4
=
'1111'
'2222'
'3333'
'4444'
'5555'
因以字符串的形式读入,所以有''。
————————————————————————————————
三、中文
数据
英文混乱如test.txt
说明:这种内容格式的文件用上面的方法是不行的。
以下是由chinamaker编写的一种方法:
fidin=fopen('test.txt');
%
打开test2.txt文件
fidout=fopen('mkmatlab.txt','w');
%
创建MKMATLAB.txt文件
while
~feof(fidin)
%
判断是否为文件末尾
tline=fgetl(fidin);
%
从文件读行
if
double(tline(1))>=48&&double(tline(1))<=57
%
判断首字符是否是数值
fprintf(fidout,'%s\n\n',tline);
%
如果是数字行,把此行数据写入文件MKMATLAB.txt
continue
%
如果是非数字继续下一次循环
end
end
fclose(fidout);
MK=importdata('MKMATLAB.txt');
%
将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
>>
MK
MK
=
1
11
111
1111
2
22
222
2222
3
33
333
3333
4
44
444
4444
5
55
555
5555