>> s = 'settb, ' 'Position' ', [.8*rand .9*rand .2 .1]) ' ; tworzy ciąg zawierający polecenie zmieniające położenie przycisku.
Powtórne wykonanie eva1(s)
przesunie przy cisk w przypadkowe położenie. Ostatecznie set(b,’Callback',s)
instaluje s jako działanie wywołania zwrotnego (' Callback '). Po każdym kliknięciu tego przycisku przesuwa się on w nowe położenie.
MATLAB zapewnia kilka sposobów generowania grafiki w ruchu. Użycie własności eraseMode jest odpowiednie dla długich sekwencji prostych wykresów, w których zmiana od ramki do ramki jest minimalna. Oto przykład pokazujący symulację ruchów Browna. Zakłada się ilość punktów, jak na przykład
n = 20
i temperaturę lub prędkość jak s = .02
Najlepsze wartości tych dwóch parametrów zależą od prędkości komputera. Następnie generowane są przypadkowa punkty o współrzędnych (x,y) z przedziału od -1/2 do +1/2
x = rand(n,1)-0.5; y = rand(n,1)-0.5;
i wykreślane są punkty w kwadracie o bokach w -1 i +1. Dalej zapisuje się uchwyt wektora punktów i ustawia jego parametr EraseMode na xor, co mówi systemowi graficznemu MATLAB-a, aby nic przerysowywał całego wykresu, gdy współrzędne jednego punktu zostaną zmienione, ale zachował kolor tła w sąsiedztwie punktu za pomocą operacji „exelusive or”. h = plot(x,y,'.'); axis( [ -1 1 -1 1]) axis square grid off
set(h,'EraseMode','xor','MarkerSize',18)
Animacja jest realizowana w nieskończonej pętli while, którą można przerwać naciskając klawisze <ctrl>-+c. Za każdym razem obiegu pętli należy dodać niewielkie zaburzenie (szum o rozkładzie normalnym) do współrzędnych punktów. Następnie, zamiast tworzyć cały nowy wykres, po prostu zmieniane są własności Xdata i Ydata oryginalnego wykresu: while 1
x = x + s*randn(n,1); y = y + s*randn(n,1); set(h,'Xdata',x,'Ydata' , y)
end
117