由于导师的项目,今天花时间做了一个基于铁路列车进过铁轨时采集的磁场数据和加速度数据,做了一个实时的数据流动图。
内容简单,排版简陋,日后逐渐改善,不断进步。希望与各位朋友、大神相互交流、学习。
其中的绘图方法也是借鉴博客 点击打开链接
程序代码:
%Create data flow charts
clc;
close all;
clear all;
%Read Data 读取数据
a=xlsread('C:\Users\1042zyl\Desktop\WQW.xlsx','B1:B25000')'; % magnetic field
b=xlsread('C:\Users\1042zyl\Desktop\WQW.xlsx','C1:C1000000')';% Acceleration
%interpolation 插值法,扩充数据a
y=a;
[m,n]=size(y);
y_data=[];
for i=1:m
x=linspace(1,length(y(i,:)),length(y(i,:)));
xi=1:0.02495:length(y(i,:));% Matching sampling rate 其中的0.02495可以根据自己的实际情况设定, 250000/1000000
yi=interp1(x,y(i,:),xi, 'spline');%采用球面插值
y_data=[y_data; yi];
end
data=y_data;
a=data;
%normalization 归一化,使在相同标定范围内。归一到[-1,1]
[a,minp,maxp]=premnmx(a);
[b,minp,maxp]=premnmx(b);
%Data reverse 数据的翻转
a=fliplr(a);
b=fliplr(b);
%data flow charts
t=[1];
m=[a(1);b(1)];
p = plot(t,m,...
'EraseMode','background','MarkerSize',5);
x=0
axis([0 3300 -1 1]);%横坐标[0 3000],纵坐标范围[-1 1]
for i=1:20:length(a)%每个20个点,取一个数据,可以实现降采样和绘图速度变化
t=[t i];
m=[m [a(i);b(i)]];
set(p(1),'XData',t,'YData',m(1,:),'Color','r','LineWidth',1,'linestyle','-')%设置绘图属性
set(p(2),'XData',t,'YData',m(2,:),'Color','g','LineWidth',1,'linestyle','-')
drawnow
x=x+20; % Update x-axis 横坐标更新
if x>3300 % Figure window size 3300 %每次更新后,图像窗口为3300
d=x-3300;
axis([d x -1 1]);
else
axis([0 3300 -1 1]);
end
pause(0.000001)#暂停时间,可以改变绘图速度
% Create gif 将matlab_plot保存为gif格式
f = getframe;
im=frame2im(f);
[I,map] = rgb2ind(im,256);
if i==1
imwrite(I,map,'out1.gif','gif','loopcount',inf,'Delaytime',0.02)
else
imwrite(I,map,'out1.gif','gif','writemode','append','Delaytime',0.02)
end
end
% 第二种方法 采用comet方法
% x=0
% for i=6000:floor(length(b)/800)
% w=1:1:800;
% comet(w,b);
% grid on
% end
结果展示:(只截取保存最后gif的一部分作为展示):