1、今天需要做个 matlab 读取 txt 文件,在网上收集了下,查到了几篇不错的,总结一下,方便大家(包括 me)使用:下面这个函数是取 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 nl
2、ine=linefprintf(fidout,%sn,tline);dataout=tline;endendfclose(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 网站下载
3、就行。根据 txt 文档不同种类介绍不同的读取数据方法转自:http:/ txt 文档,从 matalb 中读取就简单多了例如 test.txt 文件,内容为“17.901 -1.1111 33.04517.891 -1.1286 33.04517.884 -1.1345 33.045”可以在 command window 中输入 load test.txt ,然后就会产生一个 test 的数据文件,内容跟 test.txt 中的数据一样;另一种方法是在 file/import data/next/finish 也可产生一个叫 test 的数据文件。二、中英文和数据如 test1.txt“你好
4、欢迎来到振动论坛1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555”这样的文件怎么读入数据呢?方法有多种,现举两个比较简单实用的。方法一:file/import data/next/finish whosName Size Bytes Classdata 5x4 160 double arraytextdata 4x1 300 cell arrayGrand total is 54 elements using 460 bytes datadata =1 11 111 11112 22 222 22223 33 3
5、33 33334 44 444 44445 55 555 5555 textdatatextdata =你好欢迎来到振动论坛方法二: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 =12345a2 =1122334455a3 =111222333444555a4 =1111222233334444
6、5555因以字符串的形式读入,所以有。三、中文 数据 英文混乱如 test.txt你好1 11 111 1111欢迎来到2 22 222 2222振动论坛3 33 333 4 44 444 44445 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) MKMK =1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555