Matlab plot知识补充

1.动态画图(坐标轴滚动)

a.figure;已省略,当想要在一个新的窗口上显示时,重复该语句。
b.hold on保留之前画好的,在基础上画下一张。
c.axis([ ])填入变量,使得坐标轴滚动。
d.当样式选择为-线时,两点才能连成一条线段,注意此时自变量和因变量为个数为2的数组。

t=0;
t1=[0 0.1]; %“x”,因为线的样式为'-,至少同时输入两个点
m1=sin(t1); %“y”
p = plot(t1,m1,'b-','MarkerSize',5); % 线的样式为'-,颜色为蓝色  
x=-1.5*pi;
axis([x x+2*pi -1.5 1.5]); % x轴和y轴的变化范围
grid on; 

for i=1:1000
    hold on % 保留上一张图,追加下一帧图片
    t=0.1*i; %下一个点
    t1=t1+0.1; %下一段线
    m1=sin(t1);
    p = plot(t1,m1,'-b','MarkerSize',5);  
    x=x+0.1;
    axis([x x+2*pi -1.5 1.5]);
    pause(0.01); % 参数可调整画图速率
end

2.动态绘图(坐标轴固定)

a.在红线画好之后再画蓝线,动态显示蓝线。通过循环以及getframe实现。
b.axis([ ])填入常值,标定坐标轴范围,使得坐标轴不滚动。
当样式选择为.线时,两点才能连成一条线段,此时注意自变量和因变量的个数需要对应,例如都是单值,或者长度相同的矩阵等。不然会报错:错误使用plot 矢量长度必须相同
c.set(h,'visible','off');此处h为句柄。通过get(h),可以查询该类型有那些属性可以设置,通过语句set(h, '属性名', '属性值')可以设置属性。此处用来实现实时打点,并且显示后自动擦除。

此处的擦除功能不能使用delete/hold off/draw now实现,分别会遇见:
deleteplotdelete语句不会严格先后执行,会完全不显示。
hold off:在只有一个动态散点图的情况下,在循环内每执行一次后加上hold off可以实现。但如果要实现保留动态散点作图前的图,并且实现动态散点作图只显示当前的点这样的需求时,在循环内直接使用hold off会将之前的图一并擦去。
drawnow:好像是不行,反正我没有成功。

clc;
close all;
x1 = 1:100;
y2 = 0.03 * x1;
plot(x1,y2,'.r');
axis([0,100,0,3]);
hold on;
y1 = zeros(1,101)+2;
j=0;
i= -1;
x2= 0:1:100;
for k=1:100
    j = j+1;
    i = i+1;
    x = x2(1,j);
    y=y1(1,x2(1,j)+ 1);
    h = plot(x,y,'.b');
    axis([0,100,0,3]);%坐标轴的范围
    pause(0.2); % 调整速率
    getframe;
    set(h,'visible','off');
end
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容