Grafica in MATLAB
MATLAB are facilităţi grafice puternice şi versatile. Se pot genera grafice şi figuri relativ uşor, iar atributele lor se pot modifica cu uşurinţă. Nu ne propunem să fim exhaustivi, ci dorim doar să introducem cititorul în facilităţile grafice MATLAB care vor fi necesare în continuare. Figurile existente pot fi modificate uşor cu utilitarul Plot Editor. Pentru utilizarea sa a se vedea help plotedit şi meniul Tools sau bara din ferestrele figurilor.
Grafica 2D
Grafice de baza
Funcţia MATLAB plot realizează grafice bidimensionale simple unind punctele vecine.
x=[1.5, 2.2, 3.1, 4.6, 5.7, 6.3, 9.4];
y=[2.3, 3.9, 4.3, 7.2, 4.5, 3.8, 1.1];
MATLAB deschide o fereastră pentru figură (dacă una nu a fost deja deschisă ca rezultat al unei comenzi precedente) în care desenează imaginea. În acest exemplu se utilizează valori implicite ale unor facilităţi cum ar fi domeniul pentru axele x şi y, spaţiile dintre diviziunile de pe axe, culoarea şi tipul liniei.Mai general, în loc de plot(x,y), putem utiliza plot(x,y,şir), unde şir este un şir de caractere ce controlează culoarea, marcajul şi stilul de linie. De exemplu, plot(x,y,’r*--’) ne spune că în fiecare punct x(i), y(i) se va plasa un asterisc roşu, punctele fiind unite cu o linie roşie întreruptă. Cele trei elemente din şir pot apare în orice ordine; de exemplu, plot(x,y,’ms--’) şi plot(x,y,’s--m’) sunt echivalente.
plot(x,y,’+y’) marchează punctele cu un plus galben, fără a le uni cu nici o linie. Tabela de mai jos dă toate opţiunile disponibile.
Exemplul de mai jos desenează o linie punctată neagră marcată cu romburi.
De notat că plot acceptă mai multe seturi de date. De exemplu,
plot(x,y,'g-p',b,c,'r--h')
desenează în aceeaşi figură graficele pentru x(i), y(i) şi b(i), c(i) cu linie continuă verde şi respectiv cu linie întreruptă roşie, marcate cu pentagramă şi respectiv hexagramă.
Comanda plot acceptă şi argumente matriciale. Dacă x este un vector de dimensiune
m şi Yeste o matrice m × n, plot(x,Y)suprapune graficele obţinute din xşi fiecare coloană a lui Y. Similar, dacă X şi Y sunt matrice de aceeaşi dimensiune, plot(X,Y)suprapune graficele obţinute din coloanele corespunzătoare ale lui X şi Y.
Exemplu: plot cu argument matrice
Dacă argumentele lui plot nu sunt reale, atunci părţile imaginare sunt în general ignorate. Singura excepţie este atunci când plot este apelat cu un singur argument. Dacă Y este complex, plot(Y) este echivalent cu plot(real(Y),imag(Y)). În cazul când Y este real, plot(Y) desenează graficul obţinut luând pe abscisă indicii punctelor şi pe ordonată Y.
Exemplu de grafic în complex: dorim să reprezentăm funcţia complexă de argument real,
, f=(3+sin(10*pi*x)+sin(61*exp(0.8*sin(pi*x)+0.7))).*exp(pi*1i*x);
plot(f); axis equal; axis off
Atributele se pot controla furnizând argumente suplimentare lui plot. Proprietăţile Linewidth (implicit 0.5 puncte) şi MarkerSize (implicit 6 puncte) pot fi specificate în puncte, unde un punct este 1/72 inch.
x=[1.5, 2.2, 3.1, 4.6, 5.7, 6.3, 9.4];
y=[2.3, 3.9, 4.3, 7.2, 4.5, 3.8, 1.1];
plot(x,y,'m--^','LineWidth',3,'MarkerSize',5)
Culoarea laturilor marcajului şi a interiorului marcajului se poate seta pe una din culorile din tabela 2.1 cu proprietăţile MarkerEdgeColor şi MarkerFaceColor.
plot(x,y,'r--o','MarkerEdgeColor','m','LineWidth',3,'MarkerSize',15)
Funcţia loglog, spre deosebire de plot, scalează axele logaritmic. Această facilitate este utilă pentru a reprezenta relaţii de tip putere sub forma unei drepte. În continuare vom reprezenta graficul restului Taylor de ordinul al doilea
pentru
,
. Când h este mic, �ℎ| pentru ℎ=10−𝑖,această cantitate se comportă ca un multiplu al lui
şi deci pe o scară log-log valorile vor fi situate pe o dreaptă cu panta 3. Vom verifica aceasta reprezentând restul şi dreapta de referinţă cu panta prevăzută cu linie punctată. taylerr=abs((1+h+h.^2/2)-exp(h));
loglog(h,taylerr,'-',h,h.^3,'-.')
xlabel('h'), ylabel('|eroare|')
title('Eroarea in aproximarea Taylor de grad 2 a lui exp(h)','Fontsize',14)
În acest exemplu s-au utilizat comenzile title, xlabel şi ylabel. Aceste funcţii afişează şirul parametru de intrare deasupra imaginii, axei x şi respectiv axei y. Comanda box off elimină caseta de pe marginea graficului curent, lăsând doar axele de coordonate. Dacă loglog primeşte şi valori nepozitive, MATLAB va da un avertisment şi va afişa doar datele pozitive. Funcţiile înrudite semilogx şi semilogy, scalează doar una din axe.
Dacă o comandă de afişare este urmată de alta, atunci noua imagine o va înlocui pe cea veche sau se va suprapune peste ea, depinzând de starea hold curentă. Comanda hold on face ca toate imaginile care urmează să se suprapună peste cea curentă, în timp ce hold off ne spune că fiecare imagine nouă o va înlocui pe cea precedentă. Starea implicită corespunde lui hold off.
Se pot reprezenta curbe în coordonate polare cu ajutorul comenzii polar(t,r), unde t este unghiul polar, iar r este raza polară. Se poate folosi şi un parametru suplimentar s, cu aceeaşi semnificaţie ca la plot. Graficul unei curbe în coordonate polare, numită cardioidă, şi care are ecuaţia
unde a este o constantă reală dată, se obţine cu secvenţa:
Funcţia fill lucrează la fel ca plot. Comanda fill(x,y,c) reprezintă poligonul cu vârfurile x(i), y(i) în culoarea c. Punctele se iau în ordine şi ultimul se uneşte cu primul. Culoarea c se poate da şi sub forma unui triplet RGB, [r g b]. Elementele r, g şi b, care trebuie să fie scalari din [0,1], determină nivelul de roşu, verde şi albastru din culoare. Astfel, fill(x,y,[0 1 0]) umple poligonul cu culoarea verde, iar fill(x,y,[1 0 1]) cu magenta. Dând proporţii egale de roşu, verde şi albastru se obţin nuanţe de gri care variază de la negru ([0 0 0]) la alb ([1 1 1]). Exemplul următor desenează un heptagon regulat în gri:
fill(cos(t),sin(t),[0.7,0.7,0.7])
Comanda clf şterge figura curentă, iar close o închide. Este posibil să avem mai multe ferestre figuri pe ecran. Cel mai simplu mod de a crea o nouă figură este comanda figure. A n-a fereastră figură (unde n apare în bara de titlu) poate fi făcută figură curentă cu comanda figure(n).
Comanda close all va închide toate ferestrele figurii. De notat că multe atribute ale unei figuri pot fi modificate interactiv, după afişarea figurii, utilizând meniul Tool al ferestrei sau bara de instrumente (toolbar). În particular, este posibil să se facă zoom pe o regiune particulară cu ajutorul mouse-ului (vezi help zoom).
Axe şi adnotarea
Diversele aspecte ale unui grafic pot fi controlate cu comanda axis. Unele opţiuni se dau în tabela de mai jos.
Axele pot fi eliminate cu axis off. Raportul dintre unitatea pe x şi cea pe y (aspect ratio) poate fi făcut egal cu unu, astfel ca cercurile să nu pară elipse, cu axis equal. Comanda axis square face caseta axelor pătrată.
plot(fft(eye(17))), axis equal, axis square
Deoarece figura este situată în interiorul cercului unitate, axele sunt foarte necesare.
plot(fft(eye(17))), axis equal, axis off
Comanda axis([xmin xmax ymin ymax])setează limitele pentru axa x şi respectiv y. Pentru a reveni la setările implicite, pe care MATLAB le alege automat în funcţie de datele care urmează a fi reprezentate, se utilizează axis auto. Dacă se doreşte ca una dintre limite să fie aleasă automat de către MATLAB, ea se ia –inf sau inf; de exemplu, axis([-1,1,-inf,0]. Limitele pe axa x sau y se pot seta individual cu cu xlim([xmin xmax]) şi ylim([ymin, ymax]).
Exemplul următor reprezintă funcţia
pe intervalul
: plot(x,1./(x-1).^2+3./(x-2).^2);
Comanda grid on produce o grilă de linii orizontale şi verticale care pornesc de la diviziunile axelor. Rezultatul se poate vedea în figura de mai sus. Datorită singularităţilor din x = 1; 2 graficul nu dă prea multă informaţie. Totuşi, executând comanda
se observă părţile interesante ale graficului.
Exemplul următor reprezintă epicicloida
pentru
şi
. x = (a+b)*cos(t)-b*cos((a/b+1)*t);
y =(a+b)*sin(t)-b*sin((a/b+1)*t);
title('epicicloida: a=12, b=5')
xlabel('x(t)'), ylabel('y(t)')
Limitele din axis au fost alese astfel ca să rămână un oarecare spaţiu în jurul epicicloidei. Comanda legend(’string1’,’string2’,...,’stringn’,pp)va ataşa unui grafic o legendă care pune ’stringi’ după informaţia culoare/ marcaj/stil pentru graficul corespunzător. Parametrul opţional pp indică poziţia legendei (vezi help legend). În versiunile mai noi, poziţia se specifică cu 'Location', val. Exemplul care urmează adaugă o legendă unui grafic al sinusului şi cosinusului.
plot(x,cos(x),'-ro',x,sin(x),'-.b')
h = legend('cos','sin','Location','best');
Textele se pot include în grafice cu ajutorul comenzii text(x, y, s), unde x şi y sunt coordonatele textului, iar s este un şir de caractere sau o variabilă de tip şir. Începând cu versiunea 5, MATLAB permite introducerea în interiorul parametrului sa unor construcţii TeX, de exemplu _ pentru indice, ^ pentru exponent, sau litere greceşti ( \alpha, \beta, \gamma, etc.). De asemenea, anumite atribute ale textului, cum ar fi tipul font-ului, dimensiunea şi altele sunt selectabile începând cu versiunea 4. Comenzile
plot(0:pi/20:2*pi,sin(0:pi/20:2*pi),pi,0,'o')
text(pi,0,'\leftarrow sin(\pi)','FontSize',18)
adnotează punctul de coordonate
cu şirul
. Aceste facilităţi se pot utiliza şi în titluri, legende sau etichete ale axelor, care sunt obiecte de tip text. Începând cu MATLAB 7 primitivele text suportă un subset puternic LaTeX. Proprietatea corespunzătoare se numeşte Interpreter şi poate avea valorile TeX, LaTeX sau none. Pentru un exemplu de utilizare a macrourilor LaTeX a se vedea script-ul graphLegendre.m %graphs for Legendre polynomials
n=4; clf
t=(-1:0.01:1)';
s=[];
ls={':','-','--','-.'};
lw=[1.5,0.5,0.5,0.5];
for k=1:n
y=vLegendre(t,k);
s=[s;strcat('\itn=',int2str(k))];
plot(t,y,'LineStyle',ls{k},'Linewidth',lw(k),'Color','k');
hold on
end
legend(s,'Location','SouthEast')
xlabel('t','FontSize',12,'FontAngle','italic')
ylabel('L_k','FontSize',12,'FontAngle','italic')
title('Legendre polynomials ','Fontsize',14);
text(-0.65,0.8,'$L_{k+1}(t)=tL_k(t)-\frac{1}{4-k^{-2}}L_{k-1}(t)$',...
'FontSize',14,'FontAngle','italic','Interpreter','LaTeX')
Codul pentru funcţia vLegendre:
Mai multe grafice pe aceeaşi figură
Funcţia subplot permite plasarea mai multor imagini pe o grilă în aceeaşi figură.
Format:
subplot(mnp), sau echivalent, subplot(m,n,p).
Efect: fereastra figurii se împarte într-un tablou cu m×n regiuni, fiecare având propriile ei axe. Comanda de desenare curentă se va aplica celei de-a p-a dintre aceste regiuni, unde contorul variază de-a lungul primei linii, apoi de-a lungul celei de-a doua ş.a.m.d. De exemplu, subplot(425)împarte fereastra figurii într-o matrice 4×2 de regiuni şi ne spune că toate comenzile de desenare se vor aplica celei de-a cincea regiuni, adică primei regiuni din al treilea rând. Dacă se execută mai târziu subplot(427), atunci poziţia (4,1) devine activă. Vom da în continuare mai multe exemple.
subplot(221), fplot(@(x) exp(sqrt(x).*sin(12*x)),[0 2*pi])
subplot(222), fplot(@(x) sin(round(x)),[0,10],'-')
subplot(223), fplot(@(x) cos(30*x)./x,'LineStyle','-.')
fplot(@sin, [0 5*pi]) ; hold on
fplot(@(x) cos(2*x), [0 5*pi])
fplot(@(x) 1./(1+x), [0, 5*pi])
Este posibil să se obţină grile neregulate de imagini apelând subplot cu şabloane de grile diferite. Exemplu:
subplot(2,2,1), plot(x,sin(x))
subplot(2,2,2), plot(x,round(x))
subplot(2,1,2), plot(x,sin(round(x)))
Al treilea argument al lui subplot poate fi un vector ce specifică mai multe regiuni; ultima linie se poate înlocui cu
Grafice 3D
Curbe 3D
Funcţia plot3 este un analog tridimensional al lui plot. Exemplu:
xlabel('x(t)'), ylabel('y(t)'), zlabel('z(t)')
title('{\itExemplu} plot3','FontSize',14)
Graficul se putea obţine cu fplot3
fplot3(@(t) (1+t.^2).*sin(20*t), @(t) (1+t.^2).*cos(20*t), @(t) t, [-5,5])
Limitele de axe în spaţiul tridimensional se determină automat, dar ele pot fi schimbate cu
axis([xmin, xmax, ymin, ymax, zmin, zmax])
Înafară de xlim şi ylim, există şi zlim, prin care se pot schimba limitele pe axa z.
Suprafeţe
O funcţie de două variabile
se reprezintă cu ajutorul valorilor ei pe o mulţime discretă
, unde
, şi
sunt puncte de pe axele x şi y luate în ordine crescătoare. Produsul lor cartezian ne dă o grilă rectangulară carteziană. Pentru ilustrare, să considerăm grila definită prin
şi valorile funcţiei date de
.Funcţia meshgrid este utilă la obţinerea grilelor. Ea are forma
[X,Y] = meshgrid(x,y)
[X,Y] = meshgrid(x)
[X,Y,Z] = meshgrid(x,y,z)
Prima formă transformă domeniul specificat de vectorii x şi y în tablourile bidimensionale X şi Y, care pot fi utilizate la evaluarea funcţiilor de două variabile şi la obţinerea graficelor tridimensionale cu ajutorul funcţiilor mesh şi surf şi a variantelor lor. Liniile tabloului X sunt copii ale lui x, iar coloanele lui Y sunt copii ale lui y. Această regulă trebuie respectată şi dacă elementele lui z se obţin prin cicluri for/end. Forma a doua are acelaşi efect ca [X,Y]=meshgrid(x,x), iar cea de-a treia este utilizată pentru producerea unor tablori tridimensionale, folosite la calculul valorilor unor funcţii tridimensionale sau la obţinerea unor grafice volumetrice.
Funcţia mesh(x,y,z), unde x, y şi z sunt tablouri bidimensionale de aceeaşi dimensiune, generează o reprezentare de tip cadru de sârmă a suprafeţei parametrice specificate de x, y şi z.
Exemplu:
title('Graficul lui xe^{-xˆ2-yˆ2}','FontSize',14)
xlabel('x'),ylabel('y'),zlabel('z')
Funcţia surf produce grafice asemănătoare cu cele obţinute cu ajutorul funcţiei mesh, dar cu deosebirea că celulele suprafeţei sunt colorate. Dacă în exemplul precedent înlocuim mesh cu surf se obţine graficul:
title('Graficul lui xe^{-xˆ2-yˆ2}','FontSize',14)
xlabel('x'),ylabel('y'),zlabel('z')
Alte exemple:
x = 0:0.1:pi; y=0:0.1:pi;
Z=sin(Y.^2+X)-cos(Y-X.^2);
alt exemplu:
[X,Y]=meshgrid(linspace(-1,1,20)); Z=X.^2-Y.^2;
subplot(2,2,1), surf(X,Y,Z),
title('\bf{surf}',FS,14), colorbar
subplot(2,2,2), surfc(X,Y,Z),
title('\bf{surfc}',FS,14), colorbar
subplot(2,2,3), surf(X,Y,Z), shading flat
title('\bf{surf} shading flat',FS,14), colorbar
subplot(2,2,4), waterfall(X,Y,Z)
title('\bf{waterfall}',FS,14), colorbar
Graficele tridimensionale exemplificate utilizează unghiurile de vizualizare implicite ale MATLAB. Acestea pot fi modificate cu view. Apelul view(a,b) alege unghiul de rotaţie în sens invers acelor de ceasornic în jurul axei z (azimutul) de a grade şi unghiul faţă de planul xOy (elevaţia) de b grade. Implicit este view(-37.5,30). Instrumentul rotate 3D de pe bara de instrumente a ferestrei figurii permite utilizarea mouse-ului pentru schimbarea unghiurilor de vedere.
Este posibil sa vedem un grafic 2D ca pe unul 3D, utilizând comanda view pentru a da unghiurile de vedere, sau mai simplu utilizând view(3). Exemplu
clf, plot(fft(eye(17))); view(3); grid
Contururi
O facilitate uşor de utilizat de desenare a contururilor este oferită de fcontour. Apelul lui fcontour în exemplul următor produce contururi pentru funcţia
pe domeniul dat de
şi
; rezultatul se poate vedea în jumătatea de sus a figurii . fcontour(@(x,y) sin(3*y-x.^2+1)+cos(2*y.^2-2*x),[-2,2,-1,1]);
Z =sin(3*Y-X.^2+1)+cos(2*Y.^2-2*X);
De notat că nivelurile de contur au fost alese automat. Pentru jumătatea de jos a figurii s-a utilizat funcţia contour. Întâi se fac iniţializările x = -2:.01:2 şi y = -1:.01:1 pentru a obţine puncte mai apropiate în domeniul respectiv. Apoi se execută [X,Y] = meshgrid(x,y), care obţine matricele X şi Y astfel încât fiecare linie a lui X să fie o copie a lui x şi fiecare coloană a lui Y să fie o copie a vectorului y. Matricea Z este apoi generată prin operaţii de tip tablou din X şi Y; Z(i,j) memorează valoarea funcţiei corespunzând lui x(j)şi y(i). Aceasta este forma cerută de contour. Apelul contour(x,y,Z,20) spune MATLAB să privească Z ca fiind formată din cote deasupra planului xOy cu spaţierea dată de x şi y. Ultimul argument de intrare spune că se vor utiliza 20 de niveluri de contur; dacă acest argument este omis, MATLAB va alege automat numărul de niveluri de contur.
Funcţia contour se poate utiliza şi la reprezentarea funcţiilor implicite cum ar fi
Pentru a o reprezenta grafic, rescriem ecuaţia sub forma
şi desenăm conturul pentru
şi
. clf; xm=-3:0.2:3; ym=-2:0.2:1;
contour(x,y,f,[0,0],'k-')
xlabel('x'); ylabel('y');
title('y^3+e^y=tanh(x)','FontSize',14)
O trăsătură comună tuturor funcţiilor grafice este aceea că valorile NaN sunt interpretate ca ,,date lipsă” şi nu sunt reprezentate. De exemplu,
desenează două linii disjuncte şi nu uneşte punctele 2 şi 3, în timp ce
A=peaks(80); A(28:52,28:52)=NaN; surfc(A)
produce graficul surfc cu gaură din figură. (Funcţia peaks din MATLAB are expresia
z = 3*(1-x).ˆ2.*exp(-(x.ˆ2) - (y+1).ˆ2) ...
- 10*(x/5 - x.ˆ3 - y.ˆ5).*exp(-x.ˆ2-y.ˆ2) ...
- 1/3*exp(-(x+1).ˆ2 - y.ˆ2)
şi generează o matrice de cote utilă pentru a testa şi demonstra facilităţile grafice 3D.)
La final un exemplu din manualul MATLAB: reprezentaţi suprafaţa parametrică
pentru
şi
. Adaugaţi lumină la suprafaţă cu camlight. r = @(u,v) 2 + sin(7.*u + 5.*v);
funx = @(u,v) r(u,v).*cos(u).*sin(v);
funy = @(u,v) r(u,v).*sin(u).*sin(v);
funz = @(u,v) r(u,v).*cos(v);
fsurf(funx,funy,funz,[0 2*pi 0 pi])
Salvarea şi imprimarea graficelor
Comanda print permite listarea unui grafic la imprimantă sau salvarea lui pe disc într-un format grafic sau sub formă de fişier M. Formatul ei este:
print -dperiferic -optiuni numefisier
Ea are mai multe opţiuni, care pot fi vizualizate cu help print. Dintre tipurile de periferice admise amintim:
- dps - Postscript pentru imprimante alb-negru;
- dpsc - Postscript pentru imprimante color;
- dps2 - Postscript nivelul 2 pentru imprimante alb-negru;
- dpsc2 - PostScript nivelul 2 pentru imprimante color;
- deps - Encapsulated PostScript pentru imprimante alb-negru;
- depsc - Encapsulated PostScript pentru imprimante color;
- deps2 - Encapsulated PostScript nivelul 2 pentru imprimante alb-negru;
- depsc2 - Encapsulated PostScript nivelul 2 pentru imprimante color;
- djpeg - <nn> - imagine JPEG la nivelul de calitate nn (implicit nn=75).
Dacă imprimanta dumneavoastră este setată corespunzător, comanda print va trimite conţinutul figurii curente spre ea. Comanda
print -deps2 myfig.eps
crează un fişier Postscript încapsulat alb şi negru, nivelul 2, numit myfig.eps, care poate fi listat pe o imprimantă PostScript sau inclus într-un document. Acest fişier poate fi încorporat într-un document LATEX, aşa cum se schiţează mai jos:
\documentclass{article}
\usepackage[dvips]{graphics}
...
\begin{document}
...
\begin{figure}
\begin{center}
\includegraphics[width=8cm]{myfig.eps}
\end{center}
\caption{...}
\end{figure}
...
\end{document}
Comanda print se poate utiliza şi în formă funcţională . Pentru a ilustra utilitatea formei funcţionale, exemplul următor generează o secvenţă de cinci figuri şi le salvează în fişierele fig1.eps, ..., fig5.eps:
x = linspace(0,2*pi,50);
for i=1:5
plot(x,sin(i*x))
print(-deps2’,[’fig’,int2str(i),’.eps’])
end
Al doilea argument al comenzii print este format prin concatenare, utilizând funcţia int2str, care converteşte un întreg în şir. Astfel, de exemplu, pentru i=1, instrucţiunea print este echivalentă cu print(’-deps2’, ’fig1.eps’).
Comanda saveas salvează o figură ˆıntr-un fişier care apoi poate fi încărcat de către MATLAB. De exemplu,
saveas(gcf,’myfig’,’fig’)
salvează figura curentă în format binar FIG, care poate fi încărcat în MATLAB cu comanda open(’myfig.fig’). Se pot salva şi imprima figuri din meniul File al ferestrei figurii.
Animaţie în MATLAB
Există două tipuri de animaţie în MATLAB:
- se salvează o secvenţă de cadre şi apoi se derulează rapid;
- se modifică proprietăţile XData, YData şi ZData ale obiectului;
Pentru a crea un "film", se desenează o figură la un moment dat, se utilizează funcţia getframe pentru a salva figura ca un instantaneu de pixeli într-o structură şi apoi se apelează funcţia moviepentru a reda cadrele. Iată un exemplu:
clear % Remove existing variables.
set(gca,'nextplot','replacechildren')
disp('Creating the movie...')
surf(cos(2*pi*(j-1)/10).*Z,Z)
disp('Playing the movie...')
Comanda set face ca toate comenzile surf care urmează să lase nealterate proprietăţile axelor, ca de exemplu axis tight şi liniile grilelor. Filmul este redat de n ori cu movie(F,n). Volumul de memorie necesar depinde de dimensiunea ferestrei, nu de conţinutul ei.
Vom da acum un exemplu de al doilea tip. El poate fi adaptat situaţiilor în care datele sunt afişate pe măsură ce sunt generate.
x = linspace(-pi,pi,2000);
y = cos(tan(x))-tan(sin(x));
p = plot(x(1),y(1),'.','EraseMode','none','MarkerSize',5);
Warning: The EraseMode property is no longer supported and will error in a future release.
Warning: The EraseMode property is no longer supported and will error in a future release.
axis([min(x) max(x) min(y) max(y)])
set(p,'XData',x(i),'YData',y(i))
Cheia exemplului este modul în care este folosită proprietatea EraseMode. EraseMode cu 'none' înseamnă că nu se şterg obiectele existente când graficul este redesenat cu drawnow. Dacă EraseMode este setat pe background atunci punctul vechi este şters atunci când cel nou este desenat, creându-se un efect de mişcare.