Zobrazovanie v 3D Táto tabuľka opäť poskytuje náhľad na postup pri vykreslovaní 3D grafov. Ukážka ilustruje spôsob zobrazenia hodnôt funkcií definovaných v špecifickej oblasti, využívanie farebného spektra a ďalších prvkov, ktoré napomáhajú realistickému zobrazeniu povrchu. Zvyčajne pritom využívame 4 a 5 krok. 1 Príprava dát Z = peaks(20); 2 Spustenie pracovného okna a v rámci neho voľba figure(1) umiestnenia príslušného zobrazenia subplot(2,1,2) 3 Zavolanie jednoduchej zobrazovacej funkcie v 3D h = surf(z); 4 Nastavenie farebnej škály a tieňovania colormap hot shading interp set(h,'edgecolor','k') 5 Pridanie svetla light('position',[ 2,2,20]) lighting phong material([0.4,0.6,0.5,30]) set(h,'facecolor',[0.7 0.7 0],... 'BackFaceLighting','lit') 6 Nastavenie uhla pohľadu view([30,25]) set(gca,'cameraviewanglemode','manual') 7 Nastavenie intervalu na osich, delenia axis([5 15 5 15 8 8]) set(gca,'zticklabel','negative Positive') 8 Nastavenie pomeru strán set(gca,'plotboxaspectratio',[2.5 2.5 1]) 9 Popis grafu, funkcií a osí xlabel('x Axis') ylabel('y Axis') zlabel('function Value') title('peaks') 10 Exportovanie set(gcf,'paperpositionmode','auto') print dps2 1) Zadávanie funkcií Premenná y sa nazýva funkciou premennej x, ak je určitej hodnote x jednoznačne priradená hodnota y je funkcia jednoznačná, ak nie, tak hovoríme o viacznačnej funkcii. Ak riešime funkčnú rovnicu, ktorá udáva vzťah medzi x a y a má tvar y=f(x), hovoríme o explicitnej funkcii. Funkcia v tvare f(x,y)=0, sa nazýva implicitnou funkciou, kde x je nezávislá a y závislá premenná. Ďalším vyjadrením je parametrické vyjadrenie funkcie, t.j. x=r(t), y=s(t), kde t je parameter. Funkcie môžeme v Matlabe zadávať nasledovne: F=inline( x^2, x ); G=@(x,y)( exp^(x^2+y^2) ) M files
2) Vykresľovanie dát Analógiou pre grafy v 3 D je použitie plot3. Ak vektory x, y a z majú rovnakú veľkosť, potom >>plot3(x,y,z) Generuje čiaru v 3D cez body, ktorých súradnice sú elementy x,y a z. Napríklad dostanem:. >>t = 0:pi/50:10*pi; >>plot3(sin(t),cos(t),t) >>axis square; grid on 3) Kreslenie maticových dát Ak argumentami v plot3 sú matice rovnakých veľkostí MatLab vykresľuje čiary postupne získané so stĺpcov matíc X, Y, Z.Napríklad : >>[X,Y] = meshgrid([ 2:0.1:2]); >>Z = X.*exp( X.^2 Y.^2); >>plot3(x,y,z) >>grid on
4) Kreslenie plôch Povrch je matematickz vzjadrený ako funkčná hodnota f(x;y) zodpovedajúca každej hodnote (x;y), kde počítame výšku z = f(x; y). Takže poporiadku, musíme sa rozhodnúť na rozsahu hodnôt x,y, neh teda 2 x 4 a 1 x 3. Toto nám dá štvorec, ďalej potrebujeme dodefinovať sieť na tejto oblasti. Nasledovný obrázok ukazuje sieť s krokom 0.5 v oboch smeroch. Nakoniec spočítame príslušné funkčné hodnoty v daných bodoch siete. Nech sme ti teda vybrali zobrazenú sieť, tak v MatLabe bude notácia nasledovná x = >> >> x=2:0.5:4; y = 1:0.5:3; Sieť ďalej skonštuujeme pomocou meshgrid >> [X, Y]=meshgrid(x,y); (X(i,j), Y(i,j)) sú súradnice bodu (i,j). Teraz už môžeme vyčísliť funkčné hodnoty v jednotlivých bodoch.
Chceme vykresliť funkciu f(x;y)= (x 3) 2 (y 2) 2 pre 2 x 4 a 1 y 3. >> [X,Y] = meshgrid(2:.2:4, 1:.2:3); >> Z = (X 3).^2 (Y 2).^2; >> mesh(x,y,z) >> title('saddle'), xlabel('x'),ylabel('y') U: Zopakujte predošlú úlohu s tým rozdielom, že namiesto mesh, zavoláte surf, alebo surfl. Zobereme si funkciu f= xye 2(x^2+y^2) na oblasti 2 x 2; 2 y 2 >> [X,Y] = meshgrid( 2:.1:2, 2:.2:2); >> f = X.*Y.*exp( 2*(X.^2+Y.^2)); >> figure (1) >> mesh(x,y,f), xlabel('x'), ylabel('y'), grid >> figure (2), contour(x,y,f) >> xlabel('x'), ylabel('y'), grid, hold on
5) Logické operátory Matlab representuje true a fasle pomocou hodnôt 0,1. true = 1, false = 0 Ak v nejakom bode výpočtu skalár x nadobudol hodnotu, môžeme na ňu použiť nasledovné logické operácie: x == 2 je x rovné 2? x ~= 2 nie je x rovné 2? x > 2 je x väčšie ako 2? x < 2 je x menšie ako 2? x >= 2 je x väčšies alebo rovné 2? x <= 2 je x menšie alebo rovné 2? Príklady: >> x = pi >> x ~= 3, x ~= pi Ak je x vektor, laebo matica, tak sa tieto tesy sú vykonávané jednotlivo prvok po prvku.
x = 2.0000 3.1416 5.0000 1.0000 0 1.0000 >> x == 0 >> x > 1, x >= 1 >> y = x>= 1, x > y Takisto môžeme jednotlivé logické testy kombinovaťwe >> x >> x > 3 & x < 4 >> x > 3 x == 3 Kde & reprezentuje logické a a reprezentuje logické alebo, nakoniec ~ znamená not Ako v ~= (nie rovné), ~(x>0), etc. >> x > 3 x == 3 x <= 5 7) Zistenie maxima a minima funkcie dvoch premenných Na zistenie maxima a minima funkcie použijeme nasledovný postup: >> fmax = max(max(f)) >> kmax = find(f==fmax) >> Pos = [X(kmax), Y(kmax)] >> plot(x(kmax),y(kmax),'*') >> text(x(kmax),y(kmax),' Maximum')
8) Uhol pohľadu Pre 2D grafy je pohľad nastavený defaultne na azimut=0 o a elevation = 90 o Pre 3D grafy je pohľad nastavený defaultne na azimut=37.5 o a elevation = 30 o Takže defaultne máme nastavený nasledovný graf v 3D z takéhoto pohľadu >> [X,Y] = meshgrid([ 2:.25:2]); >> Z = X.*exp( X.^2 Y.^2); >> surf(x,y,z) >>view([180 0])
>>view([ 37.5 30]) 12)Zvláštne typy grafov bar, bar3, area, pie, pie3, stairs,stem,stem3,compass,contour, contour3, countourf