MATLAB, D-plot ATT RITA GRAFER MED KOMMANDOT "PLOT" Syntax: Vi börjar med det enklaste plot-kommandot i matlab,,där x är en vektor x- värden och y en vektor med LIKA MÅNGA motsvarande y-värden. Anta att två vektorer (listor) x=[x(),...x(n))] och y=[y(),...y(n)] är definierade i matlab. Kommandot plottar punkterna ( x(k),y(k)) och binder dem med en rät linje. Exempel a Alternativ : Skriv eller kopiera följande 3 kommandon i matlab editor ( New, Script), spara som Exempel och exekvera (Run). Alternativ: Du kan skriva eller kopiera följande kommandon direkt i matlabs command window -------------------------------------- x=[,,3,5,8] y=[3,,,,6] ------------------------------------- Du får följande graf i ett nytt fönster ( Figure) 6 5.5 5.5 3.5 3.5.5 3 5 6 7 8 Exempel b Vi kan sluta ovanstående polygonlinje genom att upprepa första punkten en gång till som sista punkten i vektorerna x och y: % rensar kommandofönster % rensar alla variabler figure() % rensar eventuella gamla grafer i figure() x=[,,3,5,8,] y=[3,,,,6,3] 6 5 3 6 8 Sida av 3
MATLAB, D-plot Exempel cvi kan fylla ett polygon med kommandot fill : figure() % rensar eventuella gamla grafer i figure() x=[,,3,5,8,] y=[3,,,,6,3] fill(x,y,'g') % 'g' står för "green" färg Man kan välja följande färger: b blue g green r red c cyan m magenta y yellow k black w white 6 5 3 6 8 Analytiska funktioner y=f(x). För att plotta en funktion som är given analytisk med utrycket y=f(x) i ett intervall [a,b], skapar vi först x-vektor genom x=[a:h:b] där h är avståndet mellan två konsekutiva x-värden. Alternativt kan vi skapa x-värden med linspace(a,b,n) som genererar n punkter mellan a och b (totalt n, med a och b räknad). Därefter skapar vi motsvarande y vector genom att skriva y=f(x) i matlab-koden. (Vi använder elementvisa operationer på x-vektorn). Om vi avslutar ett kommando med semikolon då exekveras kommandot, men resultat visas inte på skärmen. x Exempel. Rita grafen till y = + e för x i intervallet [,3]. Lösning: ------------------------------------- x=[:. : 3]; % skapar x-värden med avståndet. y=-+*exp(x); % skapar y-vektorn (funktionen beräknas elementvis) figure() % nästa graf kommer att plottas i fönster % rensar gällande fönstret, (figure i vårt fall) % nyttigt i fall om fönstret har redan använts tidigare) Skriva ovanstående kommandon ( New, Script), spara som Exempel och exekvera med Run. Du får följande graf i fönstret figure() : Sida av 3
MATLAB, D-plot 3 3 Exempel 3 Rita grafen till y = x 3x + i intervallet [-, ] Lösning: x=linspace(-,, ); % Definierar punkter mellan och ( totalt). y=x.^-3*x+; % lägg märke till.^ för elementvis kvadrering. figure(3) % plottar nästa graf i fönstret "figure(3)" plot(x, y) Du får följande graf i fönstret figure(3) : 6 - - TITEL, FÖRKLARINGSTEXT OCH AXLARNA Du kan förbättra utseende av en grav genom att lägga till förklaringstext : title('text'), xlabel('text'), ylabel('text') Du kan välja intervall på axlarna i koordinatsystem a x b, c y d med kommandot axis([a,b,c,d]) Rutnät väljer du med med eller grid off. Sida 3 av 3
MATLAB, D-plot Med axis off eller axis onväljer du att rita respektive inte rita axlarna runt grafen. Exempel Rita grafen till y = sin(5x) / x för x-värden i intervallet [, π] i en rutnät. Ange titel ' y=sin(5x)/x '. Välj följande område för axlarna x 5, 3 y 3. Beteckna x-axeln med 'x i radianer' och y-axeln med 'Funktionens värde'. Lösning: x=linspace(, *pi, ); % Definierar punkter mellan och π ( totalt). y=*sin(5*x)./x; % lägg märke till./ för elementvis division. figure() plot(x, y) title( ' y=sin(5x)/x ' ) xlabel('x i radianer'); ylabel('funktionens värde'); axis([-,5, -3,3]) Du får följande graf: y=sin(5x)/x 3 Funktionens värde - - -3 5 5 x i radianer FÄRG, LINJETYP OCH MARKÖRER Kommandot: plot(x,y,'abc') Med hjälp av kommandot plot(x,y,'abc') kan vi markera punkterna (x(k), y(k)) samt ange typ och färg av den linje som binder punkterna (x(k), y(k)). Sida av 3
MATLAB, D-plot Exempel 6 I nedanstående exempel markerar vi punkter (x(k),y(k) med en liten kvadrat (s står för squere ) markerer och linjen mellan punkterna är röda, linjen är av typ streck-prick. x= :. : pi; y= sin(x); figure(6) plot(x,y,' r s -.').5 -.5-6 Här finns koder som du kan använda i kommandot plot(x,y,'a B C'). Här står A för färg B för markörens typ och C för linjens typ.. Du kan använda koder från en, två eller alla tre kolonner. Färg Markör Linjetyp b blue. point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus -- dashed m magenta * star (none) no line y yellow s square k black d diamond w white v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram Sida 5 av 3
MATLAB, D-plot Exempel 7 x=- :.5 : ; y= x.^3 -*x; figure(7) plot(x,y,'g o --') title( ' y= x^3 - x') Ovanstående kommandon ger följande graf 5 y= x 3 - x -5 - - Exempel 8 Följande kommandon x=- :.: ; y= x.^3 figure(8) plot(x,y,'r ') % en red kurva (ingen markörsymbol) title( ' y= x^3') ger en red linje utan markörer. (Vi har inte skrivit någon markörsymbol) Sida 6 av 3
MATLAB, D-plot y= x 3 5-5 - - - Exempel 9 Om vi anger markeröns typ (och eventuellt färg) men inte linjens typ då ritas endast punkterna (x(k),y(k)) som i nedanstående exempel. Följande program x=-5*pi/:. : 5*pi/; y= tan(x) figure(9) plot(x,y,'* b ') % vi definierar markör (och färg) men inte linjens typ axis([-5*pi/, 5*pi/, -5, 5]) title( ' y= tan(x)' ) ger grafen med enbart punkter (x(k), y(k), utan linjer mellan punkterna. 5 3 - - -3 - y= tan(x) -5-6 - - 6 Sida 7 av 3
MATLAB, D-plot Vi kan även styra linjetjockleken, färgen och storleken på markerön, som vi ser i följande exempel: Exempel Följande x = :.:*pi; y = sin(x.^); figure () plot(x,y,'--bp','linewidth',,'markeredgecolor','k',... 'MarkerFaceColor','g','MarkerSize',5) axis([- 6 - ]) -------------------------------------- ger grafen - - 6 FLERA KURVOR I SAMMA KOORDINATSYSTEM METOD : "HOLD ON METOD" För att plotta flera grafer i samma koordinatsystem ( samma fönster) använder vi kommandot hold on. Om vi vill ha en helt ny graf skriver vi hold off. Med hold on metoden bestäms egenskaper för koordinatsystemet av den första ritade grafen Exempel. Rita grafer till följande tre funktioner i samma koordinatsystem:. y = x /. y = sin(5x) 3. y 3 = x Lösning: x=-:.:; y=(/)*x; y=sin(5*x); Sida 8 av 3
MATLAB, D-plot y3=cos(x) figure() plot(x,y,'r -') hold on plot(x,y, ' g -') hold on plot(x,y3, 'k :') hold off.5 -.5 - - - METOD Vi kan rita flera kurvor i samma system direkt med ett kommandot plot( x,y, 'egenskaper', x,y, 'egenskaper',...) Exempel. (metod ) Ovanstående exempel gör vi med andra metoden (endast ett plotkommandot) på följande sätt x=-:.:; y=(/)*x; y=sin(5*x); y3=cos(x) figure() plot(x,y,'r -', x,y, ' g -', x,y3, 'k :') (Ger samma plot som ovan) Sida 9 av 3
MATLAB, D-plot ATT DELA ETT FÖNSTER I FLERA DELFÖNSTER (SUBPLOT) Kommandot subplot(m,n,k) delar den aktuella figuren ( fönster) i m n mindre delfönster och väljer fönstret nummer k där nästa graf kommer att ritas. Exempelvis subplot(,3,5) delar det aktuella fönstret i 3 = 6 rutor ( rader och 3 kolonner) och väljer rutan nummer 5 för nästa graf. k= k= k=3 k= k=5 k=6 Exempel 3. Testa följande exempel men försök först klura ut hur det borde se ut. %% SUBPLOT figure(3) x=-:.:; y=.*x.^3; subplot(,,) plot(x,y,'r') title('y=.*x.^3'); y=sin((x.^+)./); subplot(,,) plot(x,y,'b') title(' y=sin(x.^+)./'); subplot(,,3) x=-:.:; z=cos((x+)./); plot(x,z) title(' z=cos((x+)./)'); subplot(,,) z=*sin(x); plot(x,z,'b',x,z,'k') title('z=cos((x+)./) och z=*sin(x)'); Du får nedanstående resultat. Sida av 3
MATLAB, D-plot y=.*x. 3 y=sin(x +)/ 5.5-5 -.5 - - -5 5 - - -5 5.5 -.5 z=cos((x+)./) z=cos((x+)./) och z=*sin(x) - - - -5 5 - - -5 5 %% Vi kan sammanfoga fönster 3 och som i nedanstående exempel figure() x=[-*pi:.:*pi]; y=sin(x); subplot(,,) axis([-*pi *pi - ]) title('sin(x)') axis equal subplot(,,) x=[-*pi:.:*pi]; y=abs(sin(x)); title(' sin(x) ') axis([-*pi *pi - ]) subplot(,,[3 ]) % sammanfogar fönster 3 och x=[-*pi:.:*pi]; y=tan(x); axis([-8 8 - ]) set(gca, 'GridLineStyle', '-'); grid(gca,'minor') title('tan(x)') Sida av 3
MATLAB, D-plot sin(x) sin(x) - - - -5 5 - -5 5 tan(x) - - -8-6 - - 6 8 FLERA EXEMPEL MED D PLOT Ett exempel på en parametrizerad kurva x = x( t), y = y( t) : Exempel. Rita kurvan som definieras med x = 8cos( t), y = sin( t), t π. Lösning: %% t=:.:*pi; x=8*cos(t); y=*sin(t); figure() axis([- -5 5]) axis equal % annars väljer matlab en annan skala och ellipsen kan se ut som en cirkel title('ellipsen med halvaxlarna 8 och ') Sida av 3
MATLAB, D-plot Ellipsen med halvaxlarna 8 och 8 6 - - -6-8 - -5 5 Exempel 5 Ett exempel på "stem plot" x = :.:; y = sin(x.^).*exp(-x); z=cos(3*x) figure(5) stem(x,y) xlabel('tid') ylabel('signal') Resultat: 3 y-värden - - 3 5 x-värden Sida 3 av 3