Matlab数据文件读/写

测试数据经常使用 matal 进行处理,在此保存一份读/写文件模板方便以后使用

基本操作过程

1.测试数据读入

采集卡得到的的数据大部分可以以.txt文件列向量的形式得到,删除数据描述部分后,可以使用以下语句读入为列向量。

1
[x,y]=textread('Path',' %f %f');
2.数据处理

之后可以通过不同的处理手段,对数据进行(不限于)以下的操作

3.数据导出

处理完毕后可以将数据以.txt文件输出,给后续计算/处理使用

1
2
3
4
5
6
7
8
%写入文件路径
fid=fopen('D:\Project\Graduation Design\Matlab\MiX_Z_L.txt','wt');

for i = 1:1:1000
fprintf(fid,'%d ',f(i));
fprintf(fid,'{%f %f}\n',arr1(i),arr2(i));
end
fclose(fid);

多文件处理模板

这里以某次处理振动加速的得到速度的过程作为案例;

  • 数据文件采用统一命名规则,可以方便利用循环语句快速导入数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
direction=["x","y","z"];
pressure=["150","50"];
for i=1:length(pressure)
for j = 1:length(direction)
fname_in="\T02_"+pressure(i)+"_"+direction(j)+".txt";
path="D:\works\duct_analize\vib_"+pressure(i)+...
"\outlet2_"+pressure(i);

%得到"D:\works\duct_analize\vib_50\outlet2_50\T02_50_z.txt"
[num,t,a]=textread( char(path+fname_in) ,' %d %f %f');
za=detrend(a);
%对采集到的加速度信号去趋势处理(采集加速度信号有直流偏移量)
vz=cumtrapz(t(2),za); %对加速度信号积分得速度信号
v=detrend(vz);

%写入文件路径同样可以使用命名规则
fname_out = "\T02_"+pressure(i)+"_"+direction(j)+"vel.txt";
fid=fopen('D:\works\duct_vibration\test\vib_vel\'+fname_out,'wt');
for n = 1:length(vz)
fprintf(fid,'%d ',num(n));
fprintf(fid,'%f %f\n',t(n),v(n));
end
fclose(fid);
hold on;
plot(t,v);
end
end