matlab读取文件

matlab读取文件,第1张

一、纯数据文件(没有字母和中文,纯数字)

对于这种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如何打印出代码文件夹等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10064753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存