ATT RITA GRAFER MED KOMMANDOT "PLOT"

Download Report

Transcript ATT RITA GRAFER MED KOMMANDOT "PLOT"

Armin Halilovic
MATLAB, 2D-plot
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 xvä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)
6
5.5
5
4.5
4
3.5
3
2.5
2
1.5
1
0
1
2
3
4
5
6
7
8
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
x=[0,1,3,5,8,0]
y=[3,2,1,4,6,3]
plot(x,y)
grafer i figure(2)
6
5
4
3
2
1
0
2
Sida 1 av 13
4
6
8
Armin Halilovic
MATLAB, 2D-plot
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
6
Man kan välja följande färger:
b
g
r
c
m
y
k
w
blue
green
red
cyan
magenta
yellow
black
white
5
4
3
2
1
0
2
4
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.
Exempel 2. Rita grafen till y = −1 + 2e x fö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) :
Sida 2 av 13
Armin Halilovic
MATLAB, 2D-plot
40
30
20
10
0
0
1
2
3
=================================================
Exempel 3 Rita grafen till y = x 2 − 3x + 2 i intervallet [-1, 4]
Lösning:
---------------------------------------
x=linspace(-1, 4, 100); % Definierar punkter mellan 0 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) :
6
4
2
0
-2
-2
0
2
4
=================================================
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 grid on eller grid off.
Sida 3 av 13
Armin Halilovic
MATLAB, 2D-plot
Med axis off eller axis onväljer du att rita respektive inte rita axlarna runt grafen.
=================================================
Exempel 4 Rita grafen till y = sin(5 x ) / 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:
y=2sin(5x)/x
3
Funktionens värde
2
1
0
-1
-2
-3
0
5
10
x i radianer
15
=================================================
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 4 av 13
Armin Halilovic
MATLAB, 2D-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.
---------------------------------------
clear
clc
x=0 : 0.4 : 2pi;
y= sin(x);
figure(6)
clf
plot(x,y,' r s -.')
--------------------------------------1
0.5
0
-0.5
-1
0
2
4
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
b
g
r
c
m
y
k
w
Markör
blue
green
red
cyan
magenta
yellow
black
white
.
o
x
+
*
s
d
v
^
<
>
p
h
Linjetyp
point
circle
:
x-mark
-.
plus
-star
(none)
square
diamond
triangle (down)
triangle (up)
triangle (left)
triangle (right)
pentagram
hexagram
solid
dotted
dashdot
dashed
no line
=================================================
Sida 5 av 13
Armin Halilovic
MATLAB, 2D-plot
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
3
y= x - 4x
50
0
-50
-4
-2
0
2
4
=================================================
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)
Sida 6 av 13
Armin Halilovic
MATLAB, 2D-plot
3
y= x
10
5
0
-5
-10
-2
-1
0
1
2
=================================================
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.
y= tan(x)
5
4
3
2
1
0
-1
-2
-3
-4
-5
-6
-4
-2
0
2
4
6
=================================================
Sida 7 av 13
Armin Halilovic
MATLAB, 2D-plot
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
2
1
0
-1
-2
0
2
4
6
=================================================
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. y 2 = sin(5 x ) 3. y 3 = x 2
Lösning:
---------------------------------------
clc
x=-2:0.1:2;
y1=(1/4)*x;
y2=sin(5*x);
Sida 8 av 13
Armin Halilovic
MATLAB, 2D-plot
y3=cos(x)
figure(11)
clf
plot(x,y1,'r -')
hold on
plot(x,y2, ' g -')
hold on
plot(x,y3, 'k :')
hold off
--------------------------------------1
0.5
0
-0.5
-1
-2
-1
0
1
2
=================================================
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 plotkommandot) 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)
=================================================
Sida 9 av 13
Armin Halilovic
MATLAB, 2D-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(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
Armin Halilovic
MATLAB, 2D-plot
3
2
y1=0.1*x.
y2=sin(x +4)/4
100
1
50
0.5
0
0
-50
-0.5
-100
-10
-5
0
5
10
-1
-10
z1=cos((x+4)./4)
2
0.5
1
0
0
-0.5
-1
-5
0
5
0
5
10
z1=cos((x+4)./4) och z2=2*sin(x)
1
-1
-10
-5
10
-2
-10
-5
0
5
10
%% 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)')
Sida 11 av 13
Armin Halilovic
MATLAB, 2D-plot
sin(x)
|sin(x)|
4
4
2
2
0
0
-2
-2
-4
-5
0
-4
5
-5
0
5
tan(x)
4
2
0
-2
-4
-8
-6
-4
-2
0
2
4
6
8
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 = 8 cos(t ), y = 4 sin(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')
Sida 12 av 13
Armin Halilovic
MATLAB, 2D-plot
Ellipsen med halvaxlarna 8 och 4
8
6
4
2
0
-2
-4
-6
-8
-10
-5
0
5
10
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:
3
y-värden
2
1
0
-1
-2
0
1
2
3
x-värden
4
5
Sida 13 av 13