删除模式方法

优质
小牛编辑
133浏览
2023-12-01

EraseMode属性适合于画面变化最小的简单图的长序列。这里有一个例子放映模拟的布朗运动。指定点的数目,例如

    n = 20
    

以及温度或速度,例如

    s = .02
    

这两个参数的最佳值决定于你的计算机的速度。生成n个随机点,其(x,y)坐标介乎-1/2和+1/2。

    x = rand(n,1)-0.5;
    y = rand(n,1)-0.5;
    

在边界为-1和1的正方形作出各点。保存点的向量的句柄并把它的EraseMode设置为“异或”。这让MATLAB的图形系统在某点的坐标发生变化时不重画全图,而是用“异或”运算把该点的邻域的背景色保存起来。

    h = plot(x,y,'.');
    axis([-1 1 -1 1])
    axis square
    grid off
    set(h,'EraseMode','xor','MarkerSize',18)
    

现在让动画开始。这里有一个无穷的while循环,你可以最后输入Ctrl+c退出循环。每次循环,添加一个小的正态分布的随机噪声到点的坐标。然后,不是重创全新图,只是简单的变化原图的XDataYDataow属性。

    while 1
       drawnow
       x = x + s*randn(n,1);
       y = y + s*randn(n,1);
       set(h,'XData',x,'YData',y)
    end
    

一个点跑出正方形要多长时间?所有点逃出方框又要多久?