matlab训练1.绘图功能两个数据作图。
⾃动变化两个数
⼀个横轴,
⼀个纵轴
将数据,放在两个数组中,然后将两个⼀维数组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,800700],'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,'*');
fprintf作用%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
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,得到全局的图。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论