ATT RITA GRAFER MED KOMMANDOT "PLOT"
Syntax: Vi börjar med det enklaste plot-kommandot i matlab, plot(x,y),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(1),....x(n))] och y=[y(1),....y(n)]
är definierade i matlab.
Kommandot plot(x,y) plottar punkterna ( x(k),y(k)) och binder dem med en rät linje.
=================================================
Exempel 1 a
Alternativ 1: Skriv eller kopiera följande 3 kommandon i matlab editor ( New, Script), spara som Exempel1 och exekvera (Run).
Alternativ2: Du kan skriva eller kopiera följande kommandon direkt i matlabs command window
--- x=[0,1,3,5,8]
y=[3,2,1,4,6]
plot(x,y)
---
Du får följande graf i ett nytt fönster ( Figure1)
Exempel 1 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:
clc % rensar kommandofönster clear % rensar alla variabler figure(2)
clf % rensar eventuella gamla grafer i figure(2) x=[0,1,3,5,8,0]
y=[3,2,1,4,6,3]
plot(x,y)
0 1 2 3 4 5 6 7 8
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6
0 2 4 6 8
1 2 3 4 5 6
Sida 1 av 13
Exempel 1 cVi kan fylla ett polygon med kommandot fill :
clc clear figure(2)
clf % rensar eventuella gamla grafer i figure(2) x=[0,1,3,5,8,0]
y=[3,2,1,4,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
=================================================
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.
Exempel 2. Rita grafen till y =−1+2exför x i intervallet [0,3].
Lösning:
---
x=[0: 0.01 : 3]; % skapar x-värden med avståndet 0.01
y=-1+2*exp(x); % skapar y-vektorn (funktionen beräknas elementvis) figure(2) % nästa graf kommer att plottas i fönster 2
clf % rensar gällande fönstret, (figure2 i vårt fall) % nyttigt i fall om fönstret har redan använts tidigare) plot(x,y)
---
Skriva ovanstående kommandon ( New, Script), spara som Exempel2 och exekvera med Run.
Du får följande graf i fönstret figure(2) :
0 2 4 6 8
1 2 3 4 5 6
Sida 2 av 13
=================================================
Exempel 3 Rita grafen till y = x2 −3x+2i intervallet [-1, 4]
Lösning:
---
x=linspace(-1, 4, 100); % Definierar punkter mellan -1 och 4 ( 100 totalt).
y=x.^2-3*x+2; % lägg märke till .^ för elementvis kvadrering.
figure(3) % plottar nästa graf i fönstret "figure(3)"
clf plot(x, y)
---
Du får följande graf i fönstret figure(3) :
=================================================
TITEL, FÖRKLARINGSTEXT OCH AXLARNA
Du kan förbättra utseende av en graf 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 grid on eller grid off.
0 1 2 3
0 10 20 30 40
-2 0 2 4
-2 0 2 4 6
Sida 3 av 13
Med axis off eller axis onväljer du att rita respektive inte rita axlarna runt grafen.
=================================================
Exempel 4 Rita grafen till y =sin(5x)/x för x-värden i intervallet [0, 4π] i en rutnät. Ange titel ' y=2sin(5x)/x '. Välj följande område för axlarna −1≤x≤15, −3≤ y≤3. Beteckna x-axeln med 'x i radianer' och y-axeln med 'Funktionens värde'.
Lösning:
---
x=linspace(0, 4*pi, 200); % Definierar punkter mellan 0 och 4π ( 200 totalt).
y=2*sin(5*x)./x; % lägg märke till ./ för elementvis division.
figure(4) plot(x, y)
title( ' y=2sin(5x)/x ' ) xlabel('x i radianer');
ylabel('Funktionens värde');
axis([-1,15, -3,3]) grid on
--- Du får följande graf:
=================================================
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)) .
0 5 10 15
-3 -2 -1 0 1 2 3
y=2sin(5x)/x
x i radianer
Funktionens värde
Sida 4 av 13
Exempel 6 I nedanstående exempel markerar vi punkter (x(k),y(k) med en liten kvadrat (s står för square ) markerer och linjen mellan punkterna är röda, linjen är av typ streck-prick.
---
clear clc
x=0 : 0.4 : 2*pi;
y= sin(x);
figure(6) clf
plot(x,y,' r s -.')
---
=================================================
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
=================================================
0 2 4 6
-1 -0.5 0 0.5 1
Sida 5 av 13
Exempel 7
--- clear
clc
x=-4 : 0.5 : 4;
y= x.^3 -4*x;
figure(7) clf
plot(x,y,'g o --') title( ' y= x^3 - 4x')
Ovanstående kommandon ger följande graf
=================================================
Exempel 8
Följande kommandon --- clear
clc
x=-2 : 0.1: 2;
y= x.^3 figure(8) clf
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)
-4 -2 0 2 4
-50 0 50
y= x3 - 4x
Sida 6 av 13
=================================================
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
--- clear
clc
x=-5*pi/2: 0.1 : 5*pi/2;
y= tan(x) figure(9) clf
plot(x,y,'* b ') % vi definierar markör (och färg) men inte linjens typ axis([-5*pi/2, 5*pi/2, -5, 5])
title( ' y= tan(x)' )
---
ger grafen med enbart punkter (x(k), y(k), utan linjer mellan punkterna.
=================================================
-2 -1 0 1 2
-10 -5 0 5 10
y= x3
-6 -4 -2 0 2 4 6
-5 -4 -3 -2 -1 0 1 2 3 4 5
y= tan(x)
Sida 7 av 13
Vi kan även styra linjetjockleken, färgen och storleken på markerön, som vi ser i följande exempel:
Exempel 10 Följande
--- x = 0:0.1:2*pi;
y = sin(x.^2);
figure (10)
plot(x,y,'--bp','LineWidth',2,'MarkerEdgeColor','k',...
'MarkerFaceColor','g','MarkerSize',15) axis([-1 6 -2 2])
grid on
--- ger grafen
=================================================
FLERA KURVOR I SAMMA KOORDINATSYSTEM
METOD 1: "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 11. Rita grafer till följande tre funktioner i samma koordinatsystem:
1. y1= x/4 2. y2=sin(5x) 3. y3= x2 Lösning:
--- clc
x=-2:0.1:2;
y1=(1/4)*x;
y2=sin(5*x);
0 2 4 6
-2 -1 0 1 2
Sida 8 av 13
y3=cos(x) figure(11) clf
plot(x,y1,'r -') hold on
plot(x,y2, ' g -') hold on
plot(x,y3, 'k :') hold off
---
=================================================
METOD 2 Vi kan rita flera kurvor i samma system direkt med ett kommandot plot( x1,y1, 'egenskaper', x2,y2, 'egenskaper',....)
Exempel 12. (metod 2) Ovanstående exempel gör vi med andra metoden (endast ett plot- kommandot) på följande sätt
--- clc
x=-2:0.1:2;
y1=(1/4)*x;
y2=sin(5*x);
y3=cos(x) figure(12) clf
plot(x,y1,'r -', x,y2, ' g -', x,y3, 'k :') ---
(Ger samma plot som ovan)
=================================================
-2 -1 0 1 2
-1 -0.5 0 0.5 1
Sida 9 av 13
ATT DELA ETT FÖNSTER I FLERA DELFÖNSTER (SUBPLOT)
Kommandot subplot(m,n,k) delar den aktuella figuren ( fönster) i m× mindre delfönster och n väljer fönstret nummer k där nästa graf kommer att ritas.
Exempelvis subplot(2,3,5) delar det aktuella fönstret i 2×3=6 rutor ( 2 rader och 3 kolonner) och väljer rutan nummer 5 för nästa graf.
k=1 k=2 k=3 k=4 k=5 k=6
Exempel 13. Testa följande exempel men försök först klura ut hur det borde se ut.
%% SUBPLOT clc
figure(13) clf
x=-10:0.1:10;
y1=0.1*x.^3;
subplot(2,2,1) plot(x,y1,'r') grid on
title('y1=0.1*x.^3');
y2=sin((x.^2+4)./4);
subplot(2,2,2) plot(x,y2,'b') grid on
title(' y2=sin(x.^2+4)./4');
subplot(2,2,3) x=-10:0.1:10;
z1=cos((x+4)./4);
plot(x,z1)
title(' z1=cos((x+4)./4)');
subplot(2,2,4) z2=2*sin(x);
plot(x,z1,'b',x,z2,'k')
title('z1=cos((x+4)./4) och z2=2*sin(x)');
Du får nedanstående resultat.
Sida 10 av 13
%% Vi kan sammanfoga fönster 3 och 4 som i nedanstående exempel
clc clear figure(1)
x=[-2*pi:0.01:2*pi];
y=sin(x);
subplot(2,2,1) plot(x,y)
axis([-2*pi 2*pi -4 4]) title('sin(x)')
axis equal grid on
subplot(2,2,2)
x=[-2*pi:0.01:2*pi];
y=abs(sin(x));
plot(x,y)
title('|sin(x)|')
axis([-2*pi 2*pi -4 4]) grid on
subplot(2,2,[3 4]) % sammanfogar fönster 3 och 4
x=[-4*pi:0.01:4*pi];
y=tan(x);
plot(x,y)
axis([-8 8 -4 4])
grid on
set(gca, 'GridLineStyle', '-');
grid(gca,'minor') title('tan(x)')
-10 -5 0 5 10
-100 -50 0 50 100
y1=0.1*x.3
-10 -5 0 5 10
-1 -0.5 0 0.5 1
y2=sin(x2+4)/4
-10 -5 0 5 10
-1 -0.5 0 0.5 1
z1=cos((x+4)./4)
-10 -5 0 5 10
-2 -1 0 1 2
z1=cos((x+4)./4) och z2=2*sin(x)
Sida 11 av 13
FLERA EXEMPEL MED 2D PLOT
Ett exempel på en parametrizerad kurva x= x(t), y= y(t):
Exempel 14. Rita kurvan som definieras med x =8cos(t), y =4sin(t), 0≤ t ≤2π . Lösning:
%%
clc clear
t=0:0.01:2*pi;
x=8*cos(t);
y=4*sin(t);
figure(14) plot(x,y)
axis([-10 10 -5 5]) grid on
axis equal % annars väljer matlab en annan skala och ellipsen kan se ut som en cirkel
title('Ellipsen med halvaxlarna 8 och 4')
-5 0 5
-4 -2 0 2 4
sin(x)
-5 0 5
-4 -2 0 2 4
|sin(x)|
-8 -6 -4 -2 0 2 4 6 8
-4 -2 0 2 4
tan(x)
Sida 12 av 13
Exempel 15
Ett exempel på "stem plot"
x = 0:0.1:4;
y = sin(x.^2).*exp(-x);
z=cos(3*x) figure(5) stem(x,y) xlabel('Tid') ylabel('Signal')
Resultat:
-10 -5 0 5 10
-8 -6 -4 -2 0 2 4 6 8
Ellipsen med halvaxlarna 8 och 4
0 1 2 3 4 5
-2 -1 0 1 2 3
x-värden
y-värden
Sida 13 av 13