Matlab 版 (精华区)

发信人: candle ( 马 走 日), 信区: Matlab
标  题: How can I use Animation in plots
发信站: 紫 丁 香 (Fri Dec 24 17:22:14 1999), 转信

Animation is not the same thing as playing a movie. movie is a
    command which plays pre-recorded information. Animation is the
    process of continuously drawing and/or changing an object.
    Animation is used in the Lorenz Attractor demo. In case you are
    not familiar with this demo, it shows an object that is continuously
    moving.
    The trick behind animation in MATLAB is the EraseMode
    property. The EraseMode property controls how and when the
    object is drawn and deleted. By default, when an object is added
    or changed, new objects or changes are not drawn until the axes
    are refreshed. This occurs instantly from the command line;
    however, in M-files, the axes are not updated until a drawnow,
    getframe, pause, or a return to the prompt. When the axes are
    updated, every object is also updated. This means that they are
    redrawn. Not all objects have an EraseMode property, only
    lines, patches, surfaces, and text.
    As mentioned above, the EraseMode property controls how and
    when an object is drawn and deleted. There are four possible
    settings for EraseMode. They are:
        normal
        background
        xor
        none
    When EraseMode is set to normal, the default, the axes control
    when the object is updated. This means that the axes will flicker
    when an object is drawn, changed, or deleted.
    When EraseMode is set to background, the object deletes itself
    by drawing itself in the Figure's background color. The major
    disadvantage with this method is that objects behind this object
    are damaged.
    When EraseMode is set to xor, the object is drawn and erased by
    xor'ing it with the color beneath it. When the object is erased,
    objects behind it are not damaged.
    When EraseMode is set to none, the object is not erased when it is
    moved or destroyed.
    When are these different modes useful? If you want to eliminate
    flickering, you should not use normal. If you want to see a trail
    left behind, as in the Lorenz Attractor demo, then use none. If you
    are concerned about the color of the object and do not care what
    happens to objects beneath it, then use background. If you do not
    want to damage objects that are beneath the object, then use xor.
    As stated above, the benefit of using EraseMode is that you can
    control how and when objects are drawn and deleted. By using
    any setting other than normal, you can greatly increase the speed
    of the animation. Try the following two programs to verify this:
        % Program 1: EraseMode set to normal
        h = plot(1:100,.01:.01:1)
        axis([0 100 0 1])
        tic
        for x = 1:100
        set(h,'YData',rand(1,100))
        drawnow
        end
        toc
        % Program 2: 'EraseMode' set to xor
        h = plot(1:100,.01:.01:1,'EraseMode','xor')
        axis([0 100 0 1])
        tic
        for x = 1:100
        set(h,'YData',rand(1,100))
        % drawnow % drawnow is need on the under MS-Windows
        end
        toc
    As you can see, the setting of EraseMode can greatly influence the
    speed of the program. When the EraseMode is set to something
    other then normal, the axes and other objects are not redrawn.
    This saves a lot of time and makes the animation run smoothly.
    In addition to animation, the EraseMode property can be used to
    add lines, patches, surfaces, and text to plots without
    causing the plot to redraw. For example:
        plot(1:10)
        text(1,1,'Flickers')
        text(5,5,'No Flicker','EraseMode','Xor')
    The first text object will cause the screen to update, the second
    will not.
    One last note: Another property which influences animation is
    BackingStore. BackingStore is a property of figure and is used
    to fill in areas quickly that were covered by other windows. When
    BackingStore is set to On, the default, two copies of each figure
    are made. One is displayed in the Figure Window, and the other is
    used to patch areas that were previously covered. By setting
    BackingStore to Off, only one copy is made, thus reducing the
    amount of work required to create the plot.
    The advantage of setting the BackingStore property to On is that
    the entire Figure Window does not have to be updated to fill in a
    region that was covered by another window. The disadvantage is
    that setting BackingStore to On forces MATLAB to use
    additional resources.
    The advantage of setting the BackingStore property to Off is that
    it reduces the resources required to produce a plot. The major
    disadvantage is that the entire Figure Window must be refreshed
    to fill in areas that were covered by other windows.

--
---------------------------------------------------
I BELIEVE I CAN FLY. I BELIEVE I CAN TOUCH THE SKY.
-------------------   CANDLE   --------------------

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 150.59.34.186]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.246毫秒