machine 发表于 2016-6-9 16:17

请教一下m文件调用文本文档


我把m文件的一些数据存在txt里,在运行时直接调用,请问应该怎样实现?比较急在线等!!!

machine 发表于 2016-6-9 16:19

在线等   求回复

Edinburgh 发表于 2016-6-12 08:30

一、纯数据文件(没有字母和中文,纯数字)
对于这种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 Classdata         5x4                      160 double array
textdata       4x1                      300 cell arrayGrand total is 54 elements using 460 bytes>> datadata =         1          11         111      1111
         2          22         222      2222
         3          33         333      3333
         4          44         444      4444
         5          55         555      5555>> textdatatextdata =    '你好'
    '欢迎来到'
    '振动论坛'
    'vib.hit.edu.cn'
方法二:
=textread('test1.txt','%s%s%s%s','headerlines',4)
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
这里%s的个数和对应。
>> =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
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,'%s\n\n',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
       continue                                       % 如果是非数字继续下一次循环
    end
end
fclose(fidout);
MK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
>> MKMK =         1          11         111      1111
         2          22         222      2222
         3          33         333      3333
         4          44         444      4444
         5          55         555      5555
页: [1]
查看完整版本: 请教一下m文件调用文本文档