Finns en sammanfattning på sidan 50-51 i boken

Ingenjörsmetodik IT & ME
2009
1
Dagens tema
Att tänka rätt är stort att tänka fritt är större
MATLAB programmering är väldigt kreativt
men minsta tecken har en noga definierad
betydelse
2
Läsanvisning till EKM
• 1. Introduction (läs 1.3)
• 2. Matlab environment (Hela)
• 3. Matlab functions (3.1.1, 3.1.2 3.1.4
3.1.5 + 3.2)
• 4. Plotting (främst 4.1) översiktligt
• 5. Programmering (främst 5.3 funktioner
och 5.4 for-loopar)
• 6. 6.3.1 6.3.2
• 7. Symbolisk matematik bara 7.3.1
symbolisk derivering
• 8. Numeriska metoder (främst 8.1 + 8.2
8.3 samt 8.5 numerisk derivering)
• A. Appendix med funktioner mm
3
Dagens föreläsning
• Grunderna i MATLAB, vad är en
MATRIS???
• Vanliga kommandon
• Grafer och figurer bla ’Plot-funktionen’
• Enkla program/funktioner
4
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)
5
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
6
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
>>
7
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
8
Grunderna i MATLAB
• >> c=[ 1 2
• 3 4]
Ett kommando kan
matas in på flera rader
• c=
•
•
1
3
2
4
• >>
9
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!
10
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!
11
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 \
12
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
13
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
14
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
15
Uppräkning
• Andra nyttiga varianter är
• zeros(rader,kol)
• ones(rader,kol)
16
Studentaktivitet
• Övning skapa 1:ans till 3:ans
multiplikationstabell och presentera
resultatet i en tabell.
• Behöver inte vara tjusigt
• Använd uppräkning, vektorer
och/eller matriser
17
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.
18
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
./
19
HELP menyn
• Snabbkommando F1 tangenten
20
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
21
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
22
Inbyggda funktioner
mean(theta)
ans =
45.1875
>> std(theta)
ans =
0.2475
23
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
24
Inbyggda funktioner
• >> n=size(theta)
• n=
•
8
1
• >> n(1)
• ans =
•
8
25
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
26
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])
27
Grafer och figurer
2
• >> hist(theta)
1
0
44.5
45
45.5
46
28
Funktioner
1. Öppna matlab-editorn
2. Definiera in- och ut-värden till
funktionen
3. Skriv in dina ekvationer
4. Spara filen med samma namn som
funktionen
29
Funktionen stat.m
function [medel,s] = stat(x)
n = length(x);
medel = sum(x)/n;
s = sqrt(sum((x-medel).^2/(n-1)));
30