Föreläsning 5 matlab intro

Ingenjörsmetodik IT & ME
2011
• Problemlösning med datorer
• Vi introducerar programmet MATLAB,
installation, ’miljön’, centrala
begrepp
• Går igenom kapitel 1 & 2 i MATLAB
boken
• Beskriver labbens upplägg, schema
och gruppindelning
1
Läsanvisning till boken
Introduction to MATLAB
Kapitel
Att läsa (avsnitt)
1
2
1.1 & 1.3 + diskutera kring 1.2
Hela
3
4
3.1-3.3
3.4 delar
3.4.2 sidan 90 om statistik behandlas
separat
3.6
4.1
4.2 om 3D-plottar vid intresse
4.3
Uppgiftsnummer
(rekommenderade)
31-33 hör ihop
34-36 hör ihop
37
40-42 hör ihop
1-5
6-7 om statistik
19-21 om fördelningar
1-4 hör ihop
5-6 hör ihop
7-8 hör ihop
5
5 väldigt översiktligt, men
Special characters & find kommandot är
nyttiga
-
6
Ligger matematiskt utanför denna kurs
passar in med Algebra i period 2!
Hela
8.1, 8.2, 8.3
-
7
8
Kapitel
1
2
3
4
5
6
7
8
Att läsa (avsnitt)
OBS förra upplagans numrering!
Hela
Hela
3.1.1, 3.1.2, 3.1.4 och 3.1.5
3.2
Exemplen kan läsas vid intresse
Översiktligt
Speciellt 5.3 Funktioner
5.4
6.3.1, 6.3.2
7.3
8.1, 8.2, 8.3 och 8.5
Uppgiftsnummer
(rekommenderade)
Ej tillgängliga än för nya
upplagan
3,7, 8, 9, 10
1-4, 6, 7, 9
4 och 6
1-4, 7-10 hör ihop
1-2, 7-10 hör ihop
2
Dagens föreläsning
• Matlabmiljön
• Grunderna i MATLAB, vad är en
MATRIS???
• Vanliga kommandon
• Grafer och figurer bla ’Plot-funktionen’
• Enkla program/funktioner
• Om solpanelen, USB loggern
3
Grunderna i MATLAB
• MATLAB kan
• Räkna med matriser, vektorer och
komplexa tal
• Skapa grafer (olika varianter av
plotkommandot)
• Användas för programmering och
mer komplicerade beräkningar
• Symbolisk matematik (symbolic
toolbox)
4
Grunderna i MATLAB
• Vad är en matris?
• Ett sätt att samla ihop flera tal för en
beräkning
• Vanligaste exemplet är en vektor
1 2

 en 2x2 matris
3 4
1 2 en radvektor med 2 element (kolumner)
1
  en kolumnvekt or med 2 element (rader)
 3
5
Grunderna i MATLAB
>> a=[1 2]
a=
1
>> kallas prompten
2
[] (fyrkantiga parenteser)
>> b=[3 4]' skapar en matris
b=
3
4
Det lilla tecknet ’ ändra formen
på en matris genom att byta
plats på rader och kolumner
>>
6
Vektorer & matriser
• Byt mellan rad och
kolumnvektor med
kommandot ’
(transponat)
• Ta reda på vilken
vektortyp du har genom
kommandot size
• Den första siffran i svaret
syftar på RADERNA, den
andra på KOLUMNERNA
>> size(a)
ans =
1
2
>> size(b)
ans =
2
1
>> size(b')
ans =
1
2
7
Grunderna i MATLAB
• >> c=[ 1 2
• 3 4]
Ett kommando kan
matas in på flera rader
• c=
•
•
1
3
2
4
• >>
8
Grunderna i MATLAB
• >> c=[ 1 2
• 3 4];
• >>
Ett semikolon ; efter inmatningen gör att inget svar
skrivs ut
Detta är NORMALVARIANTEN i LÅNGA
UTRÄKNINGAR för att det ska bli SNABBARE!
9
Grunderna i MATLAB
• De vanliga räknesätten fungerar
även för matriser och vektorer
• MATLAB använder ofta symbolen
punkt ’.’ för matrisberäkningar, dvs
när flera uträkningar ska göras
’samtidigt’
• Följande kombinationer finns för
elementvis operation:
• .* ./
.^
• .+ .- finns men behövs inte!
10
Grunderna i MATLAB
• Elementvis operationer används när
ingående variabler har samma ’form’
• radvektor .* radvektor
• Kolumnvektor ./ kolumnvektor
• ’2x2’ Matris .* ’2x2’ matris
• I alla andra fall används de vanliga
räknesätten +,-,*,/,^
• För matriser finns även ett ’felvänt’
divisionstecken \
11
Vektorer & matriser
>> a*b
 3
1 2*    1* 3  2 * 4  11
 4
 3
 3 6
  * 1 2   

 4
 4 8
ans =
11
>> b*a
ans =
3
4
>>
6
8
12
Vektorer & matriser
• För att räkna med .* måste alla variabler
ha samma ‘form’
• >> a.*b
• ??? Error using ==> times
• Matrix dimensions must agree.
• >> a.*b'
• ans =
•
3
8
13
Uppräkning
• För att t.ex. Skapa värden på en x-axeln kan man göra
en uppräkning till en vektor
• >>x=-3:0.01:3;
• Svaret i detta fall hamnar i 601 kolumner, se nedan
• Columns 598 through 600
•
•
•
2.9700
2.9800
2.9900
Column 601
3.0000
14
Uppräkning
• Andra nyttiga varianter är
• zeros(rader,kol)
• ones(rader,kol)
15
HELP kommandot
• help
• HELP topics
• matlab\general
- General purpose commands.
• matlab\ops
- Operators and special
characters.
• matlab\lang
- Programming language
constructs.
• matlab\elmat
- Elementary matrices and
matrix manipulation.
• matlab\elfun
- Elementary math functions.
• matlab\specfun
- Specialized math functions.
• matlab\matfun
- Matrix functions - numerical
linear algebra.
16
HELP kommandot
• Finns en sammanfattning på sidan 50-51 i boken
>> help ops
Operators and special characters.
Arithmetic operators.
plus
- Plus
+
uplus
- Unary plus
+
minus
- Minus
uminus
- Unary minus
mtimes
- Matrix multiply
*
times
- Array multiply
.*
mpower
- Matrix power
^
power
- Array power
.^
mldivide - Backslash or left matrix divide \
mrdivide - Slash or right matrix divide
/
ldivide - Left array divide
.\
rdivide - Right array divide
./
17
HELP menyn
• Snabbkommando F1 tangenten
18
Exempel
• Omvandla vinklar från grader till radianer
theta=[45.1 45.3 44.8 45.1 45.0 45.4 45.2 45.6]'
theta =
45.1000
45.3000
44.8000
45.1000
45.0000
45.4000
45.2000
45.6000
19
En enkel vektorberäkning
radianer=pi/180*theta
radianer =
0.7871
0.7906
0.7819
0.7871
0.7854
0.7924
0.7889
0.7959
20
Inbyggda funktioner
mean(theta)
ans =
45.1875
>> std(theta)
ans =
0.2475
21
Index
medel=sum(theta)/8
medel =
45.1875
>> medel=(theta(1)+theta(2)+theta(3)+theta(4)+...
theta(5)+theta(6)+theta(7)+theta(8))/8
medel =
45.1875
Vanliga parenteser ( ) kallas
index för ett matriselement
22
Inbyggda funktioner
• >> n=size(theta)
• n=
•
8
1
• >> n(1)
• ans =
•
8
23
Inbyggda funktioner
• Standaravvikelsen med vektorberäkning och
(elementvis upphöjt till 2) .^2
• >> s=sqrt(1/(n(1)-1)*sum((theta-medel).^2))
• s=
•
0.2475
24
Grafer och figurer
45.6
45.4
45.2
45
44.8
44.6
2
4
6
8
• Plot kommandot för att
rita ut mätpunkter
• Line kommandot för
linjer
• >> plot(theta,'ro')
• >> line([1 8],[medel
medel])
• >> line([1
8],[medel+s
medel+s])
• >> line([1 8],[medel-s
medel-s])
25
Grafer och figurer
2
• >> hist(theta)
1
0
44.5
45
45.5
46
26
Ingenjörsrollen
• Från DNs kultursidor
• http://www.dn.se/DNet/jsp/polopoly.
jsp?d=&a=827474&sb2231i0=1_827
474
”Jag läste till en examen i teknisk fysik
på KTH för att jag trodde att
matematiken och siffrorna skulle
vara ett bättre språk än svenskan för
att beskriva världen ...”
27
Matriser och speciella
räknesätt
• a=[pi 5] skapar en matris
• a(1) tar ut det första elementet
(index=1) ur matrisen a => svaret
blir 3.1415
• ; stänger av utmatning av svar
• .* multiplicerar ihop matriser med
samma form/storlek
28
Matriser och speciella
räknesätt
• Hela matrisen kan hanteras på en
och samma gång!
• Inga uppräkningar eller slingor
behövs i programkoden
• Räknesätten med punkten framför
utförs elementvis i hela matrisen
• Matriser och vanliga tal kan blandas
– då utförs beräkningen också
elementvis
29
Matriser och speciella
räknesätt
• Exempel: skapa en lagom stor matris
fylld med siffran 2
• Lösning: funktionen ones(m,n) ger
matris fylld med ettor
• Siffran 2 kan multipliceras in på
VARJE element
30
Matriser och speciella
räknesätt >> ettor=ones(6,6)
ettor =
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
>> tvaor=2*ettor
tvaor =
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
31
Matriser och speciella
räknesätt
• Exempel: beräkna rörelseenergin för
en bil vid hastigheterna: 30,50 70
km/h
• Formel E=mv2/2 eller E=mv*v/2
• Alltså behövs ’upphöjt till’ ^ eller
’gånger’ *
• Fungerar ^ eller * direkt, nej
eftersom element i matriser ska
hanteras
32
Matriser och speciella
räknesätt
>> v=[30 50 70]/3.6
v=
8.3333
13.8889
19.4444
>> m=1000;
>> E=m*v^2/2
??? Error using ==> mpower
Matrix must be square.
>> E=m*v*v/2
??? Error using ==> mtimes
Inner matrix dimensions must agree.
>> E=m*v.^2/2
E=
1.0e+005 *
0.3472
0.9645
1.8904
>> E=m*v.*v/2
E=
1.0e+005 *
0.3472
0.9645
1.8904
33
Matriser och speciella
räknesätt >> ettor=ones(6,6)
ettor =
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
>> tvaor=2*ettor
tvaor =
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
34
Studentaktivitet
• Övning skapa 1:ans till 5:ans
multiplikationstabell och presentera
resultatet i en tabell.
• Behöver inte vara tjusigt
• Använd uppräkning, vektorer
och/eller matriser
35
Studentaktivitet
>> (1:5)'*(1:5)
ans =
1 2
2 4
3 6
4 8
5 10
3
6
9
12
15
4 5
8 10
12 15
16 20
20 25
>>
36
Vad är ett program
1. Ett program består av
funktionsanrop och formler/ekvationer
2. Villkorssatser: for-loopen kapitel 5
3. Kommentarer för läsbarheten
37
Funktioner och program
Tre varianter –
1. antingen ’inline’ för formler
2. eller med programfiler som skapas i
en editor
3. Funktionsfiler som sparas från
editorn
38
Skript eller programfiler
1. Öppna matlab-editorn
2. Skriv in dina ekvationer
3. Spara filen med lämpligt namn och
prefixet .m
39
Funktionsfiler
1. Öppna matlab-editorn
2. Definiera in- och ut-värden till
funktionen och funktionens NAMN
3. Skriv in dina ekvationer
4. Spara filen med samma namn som
funktionen och suffixet .m
40
Program vs. funktion
Enkelt program
statenkel.m
Enkel funktion stat.m
x=randn(100,1);
n = length(x);
medel = sum(x)/n;
s = sqrt(sum((xmedel).^2/(n-1)));
function [medel,s] = stat(x)
n = length(x);
medel = sum(x)/n;
s = sqrt(sum((x-medel).^2/(n1)));
41
Jämförelse funktion/program
• Programmet definierar sina egna xvärden
• Funktionen kan hantera godtyckliga
x-värden som användaren skickar in
42
Program innehåller funktioner
• Alla inbyggda kommandon i matlab
har formen av en funktion
• T.ex. cos(x), size(x), ...
• Man kan ANROPA sina EGNA
funktioner
43
Program innehåller funktioner
• Anropa funktionen stat
• stat(randn(100,1))
• Svaret blir?
44