- 作者:xiaoxiao
- 发表时间:2020-12-23 11:00
- 来源:未知
感谢动力学与控制技术论坛的那些无私的奉献者!!本帖特别感谢chinamaker,wolfer555,午夜流星,小人物小小等。
%小人物小小整理% www.dytrol.com% 2004.7.9
文件内容形式一(假定文件名为test1.txt):你好欢迎来到动力学与控制技术论坛www.dytrol.com1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 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 =
'你好' '欢迎来到' '动力学与控制技术论坛' 'www.dytrol.com'方法二:[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'因以字符串的形式读入,所以有''。
文件内容形式二(假定文件名为test2.txt):
你好1 11 111 1111欢迎来到2 22 222 2222动力学与仿真控制论坛3 33 333 3333www.dytrol.com4 44 444 44445 55 555 5555
说明:这种内容格式的文件用上面的方法是不行的。
以下是由chinamaker编写的一种方法:fidin=fopen('test2.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 % 如果是非数字继续下一次循环 endendfclose(fidout);MK=importdata('MKMATLAB.txt'); % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来 >> MK