matlab中读取txt数据文件(txt文本文档)

根据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

你好
欢迎来到
论坛
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 =

\'你好\'
    \'欢迎来到\'
    \'论坛\'
    \'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\',\'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

你好
1 11 111 1111
欢迎来到
2 22 222 2222
论坛
3 33 333 3333
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,\'%s\n\n\',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
       continue                                         % 如果是非数字继续下一次循环
    end
end
fclose(fidout);
MK=importdata(\'MKMATLAB.txt\');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
>> MK

MK =

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfjgz.html