自动变化两个数
一个横轴,
一个纵轴
将数据,放在两个数组中,然后将两个一维数组cat结合起来
然后绘图
如果横轴数据大于fig的横坐标最大数值,那么刷新图,移动到后续的图;
close all
clear all
count=0;
TL=10;%红fig1
TR=20;%蓝fig1
VS=10;%红fig2
VM=20;%蓝fig2
%设置fig的属性
y_axisMax = 10000;
y_axisMin = -10;
window_width = 50;
window_w = window_width;
window_d = window_w * 0.9; % display window
window=0;
runtimes = 0;
recvData = 500;
fig1 = figure(1);
%设置fig和边框的距离
set(fig1, 'Position', [100, 100, 800 700], 'color', 'w'); %
%signal = plot(runtimes, recvData);
axis([window, window + window_w, y_axisMin, y_axisMax]);
%axis([-100, (-100+700), y_axisMin, y_axisMax]);
xlabel('runtimes');
ylabel('data');
grid on;
hold on;
x_axisMin=window;
x_axisMax=x_axisMin+window_w;
fignum=0;%刷新图的次数
while ishandle(fig1)
%数据更新
%时间轴更新时间,会不断流动,形成动态曲线
runtimes=runtimes+1;
%数据纵坐标更新。
recvData=recvData+20.5;
%图中横坐标坐标轴数据起点,不断更新?应该是如果溢出了数据轴范围,那么就更新。这里要修改
%这里设置每500ms刷新一次数据,每秒钟,两个数据,一分钟2*60=120个数据,那么20分钟,
%20*120=2400个数据
displayData = runtimes - window_d + 1;
data1(: ,runtimes) = runtimes;%横坐标放在data1中
data0(:, runtimes) = recvData;%纵坐标放在对应的位置中;
xydata=cat(1,data1,data0);%把两个合并在一起;
%将recvData
% if displayData > 0
% times = [displayData : runtimes];
% plot(times, data0,'*');
% else
% end
%如果计算得的数据,大于横轴最大值window + window_w
if runtimes>(x_axisMax-5)
fignum=fignum+1;
x_axisMin=x_axisMax-5;
x_axisMax=x_axisMin+window_w;
axis([x_axisMin,x_axisMax, y_axisMin, y_axisMax]);
else
axis([x_axisMin, x_axisMax, y_axisMin, y_axisMax]);
end
times = [1 : runtimes];
plot(data1, data0,'+');
drawnow
hold on;
%延时函数
pause(1);
fprintf('runtimes = %d,recvData= %d\n', runtimes,recvData);
end
退出调试后。在坐标轴属性轴,可以将坐标轴设置为0,得到全局的图。