新氧新氧09-22 18:59

matlab读取数据文件

data1.txt:

0 3886.162 2200.938 141.240
1 3721.139 2208.475 141.152
2 3866.200 2198.936 141.126
3 3678.048 2199.191 141.250
4 3685.453 2203.726 141.241

分别采用load、importdata、textread、fscanf、textscan和fread函数读取文本数据文件。

dat1=load('data1.txt')


format long g

dat2=import('data1.txt')


[a,b,c,d]=textread('data1.txt','%2d %8.3f %8.3f %7.3f')


dat2(1:2,1:2)%提取矩阵的指定行和列组成的新矩阵


fid=fopen('data1.txt');%以只读模式打开该文本问价你,为fscanf和textscan函数的读取操作做准备

dat3=fscanf(fid,'%g',[4,inf])%采用fscanf函数读取该文件,逐列读,逐行显示,行列互换


frewind(fid)%将文件指针移动到文件开头

dat4=textscan(fid,'%2d %8.3f %8.3f %7.3f')%采用textscan函数读取文本文件的数值到单元数组中


fclose(fid)%关闭文件

关闭后就不能再读了,除非再次打开



fid=fopen('data1.txt','rt')%以 文本模式打开该文件

dat5=fread(fid)


function y = fun(x)
a = [1 2 3;
4 5 6;
7 8 9];
y = a * x;

dat1=importdata('fun.m')


使用textscan函数


celldisp(dat3)



读取包含有文本和数值的数据文件。

时间 参数1 参数2 参数3
00:00:00:000 0.000325 0.000378 0.000598
00:00:00:040 0.000256 0.000245 0.000698
00:00:00:080 0.000369 0.000251 0.000651




读取数值和文本混合的数据文件

串口数据以混合格式存储示例
串口1帧数:
4
串口1数据:
时间 参数1 参数2 参数3
00:00:00:000 0.000325 0.000378 0.000598
00:00:00:040 0.000256 0.000245 0.000698
00:00:00:080 0.000369 0.000251 0.000651
00:00:00:120 0.000372 0.000249 0.000648


串口2帧数:
3
串口2数据:
时间 参数1 参数2
00:00:00:000 0.000325 0.000378
00:00:00:040 0.000256 0.000245
00:00:00:080 0.000369 0.000251
00:00:00:120 0.000372 0.000249

对于这种混合格式的文件,应采用textread或textscan函数读取其数据(对于数据量大的文本文件,不推荐使用textread函数读取数据)

dat1=textread('data3.txt','%s','delimiter','\n')


dat1 =


'串口数据以混合格式存储示例'
'串口1帧数:'
'4'
'串口1数据:'
'时间 参数1 参数2 参数3'
'00:00:00:000 0.000325 0.000378 0.000598'
'00:00:00:040 0.000256 0.000245 0.000698'
'00:00:00:080 0.000369 0.000251 0.000651'
'00:00:00:120 0.000372 0.000249 0.000648'
''
'串口2帧数:'
'3'
'串口2数据:'
'时间 参数1 参数2 '
'00:00:00:000 0.000325 0.000378'
'00:00:00:040 0.000256 0.000245'
'00:00:00:080 0.000369 0.000251'
'00:00:00:120 0.000372 0.000249 '


>> n1=str2num(dat1{3}
n1=str2num(dat1{3}
|
Error: Expression or statement is incorrect--possibly unbalanced (, {, or [.

>> n1=str2num(dat1{3})


n1 =


4


>> dat1_1=dat1(6:9)


dat1_1 =


'00:00:00:000 0.000325 0.000378 0.000598'
'00:00:00:040 0.000256 0.000245 0.000698'
'00:00:00:080 0.000369 0.000251 0.000651'
'00:00:00:120 0.000372 0.000249 0.000648'


>> dat1_1


dat1_1 =


'00:00:00:000 0.000325 0.000378 0.000598'
'00:00:00:040 0.000256 0.000245 0.000698'
'00:00:00:080 0.000369 0.000251 0.000651'
'00:00:00:120 0.000372 0.000249 0.000648'


>> iscell(dat1_1)


ans =


1


>> dat1_2=cell2mat(deblank(dat1_1))


dat1_2 =


00:00:00:000 0.000325 0.000378 0.000598
00:00:00:040 0.000256 0.000245 0.000698
00:00:00:080 0.000369 0.000251 0.000651
00:00:00:120 0.000372 0.000249 0.000648


>> dat1_2(1)


ans =


0


>> dat1_2(2)


ans =


0


>> dat1_2(5)


ans =


0


>> dat1_3=str2num(dat1_2)


dat1_3 =


0.000325 0.000378 0.000598
0.000256 0.000245 0.000698
0.000369 0.000251 0.000651
0.000372 0.000249 0.000648


>>





程序之家二维码

000
评论