Matlab中读取txt文件的几种方法[通俗易懂]

2022-10-03 14:39:36 浏览数 (2)

大家好,又见面了,我是你们的朋友全栈君。

matlab读取文本文件的几种函数:

1、load——适合读取纯数据文本;

2、importdata——只读取数据,自动省略数据格式前后的字符,超大文件不适合;

3、textread、textscan——适合读取行列规整的文本,会存到元胞中,可通过headerlines省略读取字段名(字符行);

4、csvread、dlmread——适合读取csv、xsl等文件格式文本;

5、fprintf、fscanf——适合读取复杂的文本(中英文、数字串混杂出现);

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

对于这种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 5×4 160 double array textdata 4×1 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 =

‘你好’ ‘欢迎来到’ ‘振动论坛’ ‘vib.hit.edu.cn’

方法二: [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’) # %*s代表省略后两列数据

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

你好 1 11 111 1111 欢迎来到 2 22 222 2222 振动论坛 3 33 333 3333 vib.hit.edu.cn 4 44 444 4444 5 55 555 5555

说明:这种内容格式的文件用上面的方法是不行的。

以下是由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,’%snn’,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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197373.html原文链接:https://javaforall.cn

0 人点赞