matlab 如何读取txt 数据

3.4 113207.41665957
3.6 89222.02274155
3.2,3.0, 2.75, 2.5, 2.25

3.2 162811.45192967
3.4 110693.61816925
3.0, 2.75, 2.5, 2.25

3.2 94162.96635454
3.4 64349.90412829
3.0, 2.75, 2.5, 2.25

r1=3.2 y1=145487.57182125
r2=3.4 y2=100491.27996589
3.0, 2.75, 2.5, 2.25

如何把上述txt中的数据连续读入matlab中
(可追加50分)
注意: 数组的长度都不一样啊。

第1个回答  2009-09-01
对于有字符和数字混合的文件,如果你直接提取数据,可以使用以下2个函数

fgetl
sscanf

比如说你的这一行:
r1=3.2 y1=145487.57182125

fget返回的是string,

A=fgetl(fid)
sscanf可以进行搜寻你想要的string或者是数字

当然,你也可以靠判断等号的位置,然后把等号后面的数字截取,需要用到

strcmp函数本回答被提问者采纳
第2个回答  2009-09-01
load('filename.txt')
第3个回答  推荐于2016-04-13
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

“你好
欢迎来到
振动论坛
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 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 =
'你好'
'欢迎来到'
'振动论坛'
'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','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,实际上它不显示出来
>> MK
MK =
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。一般读取txt文件使用MATLAB即可。
第4个回答  2009-09-01
在那里有个import的东西,导如进去就可以了
第5个回答  2009-09-01
help load,你就知道
相似回答