对于这种txt文档,从matalb中读取就简单多了
例如testtxt文件,内容为
17901 -11111 33045
17891 -11286 33045
17884 -11345 33045
可以在command window中输入load testtxt ,然后就会产生一个test的数据文件,内容跟testtxt中的数据一样;另一种方法是在file/import data/next/finish 也可产生一个叫test的数据文件。
二、中英文和数据如test1txt
你好
欢迎来到
论坛
educn
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 =
'你好'
'欢迎来到'
'论坛'
'educn'
方法二:
[a1,a2,a3,a4]=textread('test1txt','%s%s%s%s','headerlines',4)
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
这里%s的个数和[a1,a2,a3,a4]对应。
>> [a1,a2,a3,a4]=textread('test1txt','%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'
因以字符串的形式读入,所以有''。
————————————————————————————————
三、中文 数据 英文 混乱如testtxt
你好
1 11 111 1111
欢迎来到
2 22 222 2222
论坛
3 33 333 3333
educn
4 44 444 4444
5 55 555 5555
说明:这种内容格式的文件用上面的方法是不行的。
以下是由chinamaker编写的一种方法:
fidin=fopen('testtxt'); % 打开test2txt文件
fidout=fopen('mkmatlabtxt','w'); % 创建MKMATLABtxt文件
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin); % 从文件读行
if double(tline(1))>=48&&double(tline(1))<=57 % 判断首字符是否是数值
fprintf(fidout,'%s\n\n',tline); % 如果是数字行,把此行数据写入文件MKMATLABtxt
continue % 如果是非数字继续下一次循环
end
end
fclose(fidout);
MK=importdata('MKMATLABtxt'); % 将生成的MKMATLABtxt文件导入工作空间,变量名为MK,实际上它不显示出来
>> MK
MK =
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555
---------------------------------------------------------------
我的txt数据里既有数字又有字符串,形式为:
0129515 DDAA 01 224609 9450000 98
0130434 DDAA 01 224609 9630000 9A
0131441 DDAA 01 224609 9720000 9B
0132448 DDAA 01 224609 9900000 9D
0133507 DDAA 01 224609 10080000 9F
0134515 DDAA 01 224609 10170000 A0
我只想要第一列,第四列,第五列。
也就是0129515 224609 9450000 这3列数,
怎样导入matlab啊?
假设数据在datatxt里,且位于当面matlab路径里,用下面这句就可以了
[col1,col2,col3]=textread('datatxt','%f %s %d %f %f %s',-1);
c='abc_101dat';%%如何得到文件名的字符串也很关键,这里假设已经得到
a=strfind(c,'');
b=c([a-3,a-2,a-1]);
d=str2num(b)
利用代码对大量数据进行自动批处理时,首先需要获取该数据存放的文件夹(文件夹路径),然后获取该文件夹下某一类型数据所有的文件名,最后通过特定的数据读取代码读取数据进行自动批处理。这里以txt文本类型作为示例(代码块中%后为注释内容)。
第一步:获取文件夹下某类型数据的所有文件名
1设置数据存放的文件夹路径;
2显示该路径下特定格式(如txt)的文件完整信息;
3提取特定格式的所有文件的文件名。
第二步:读取特定格式的所有数据
主要包括三个步骤:
1获取所提取文件的个数;
2进入循环,按提取的文件名依次读取数据内容;
3在循环中将读取的数据内容形成固定格式的数据矩阵。
在实际的处理过程中,一般不会将所有数据全部输出,通常是一个循环得到一个结果,只输出结果信息。
以上就是关于matlab读取文件全部的内容,包括:matlab读取文件、请问matlab中如何读取文件名中的数字 例如文件名是"abc_101.dat",如何读取其中的101、matlab如何打印出代码文件夹等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)