36
1 Introduktion till Matlab Föreläsning 1 Ingenjörsvetenskap [email protected]

Introduktion till Matlab Föreläsning 1

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

1

Introduktion till MatlabFöreläsning 1Ingenjörsvetenskap

[email protected]

2

Dagens agenda

• MATLAB- vad ska det vara bra för?• Arrayer, matriser och vektorer• Manipulation av arrayer• Kompakta arrayoperationer• Slingor

3

Dugga och labb• En enkel dugga (kort prov, ca 20 minuter) ges i

början av första labtillfället• Duggans uppgifter har liknande karaktär som

dokumentet ”Introduction to the Matlab language –examples and exercises”.

• För tillträde till labben krävs 50% godkänt på duggan.• För VG på labben krävs minst 75% rätt på duggan.

Ligger man strax under gränsen kan en mycket väl genomförd laboration ”kompensera”.

• G ger 1 poäng, VG ger 2 poäng bidrag till poängsiffran för kursens slutbetyg.

4

Förberedelse inför labben• Förberedelse inför duggan och labb 1:

– Repetera exemplen i ovanstående dokument. – Repetera denna slide show (publiceras i WebCT i

eftermiddag).• Läs ev. i läroboken ”Introduction to Matlab 7”,

kap 1 till 6 inför labbtillfälle 1 om det som känns oklart.

• Matlab finns i PC-labbsalarna om du redan nu vill testa.

• Inför labbtillfälle 2, läs i läroboken kapitel 8.2-8.3, om regressionsanalys

5

Vad är MATLAB? • MATrix LABoratory• En avancerad och programmerbar

”miniräknare”• Hanterar bl.a. vektor- och matrisalgebra,

samt komplexa tal.• Utvecklades i slutet av 70-talet.• Idag vanligt inom forskning och utveckling,

främst för – numeriska beräkningar, och – visualiering av data med diagram

6

Tillämpningsområden• Grafisk visualisering av data• Numerisk analys• Interpolation, extrapolation,

regressionsanalys(i denna kurs)

• Statistik• Optimering• Datorsimulering• Signalbehandling• Styr- och reglerteknik• Kommunikationssystem• Bildbehandling• M.m.

7

Hur Matlab står sig i en jämförelse…

• Fördelar: – Enkelt, dynamiskt typat, programmeringsspråk– Kan både användas som ”miniräknare” och programmeras– Många toolboxar (funktionsbibliotek) finns utvecklade.– Mycket utbredd

• Alternativ till MATLAB:– Hårt typade programmeringsspråk såsom FORTRAN, C, C++ och Java ger

snabbare beräkningar• FORTRAN (utvecklades på 50-talet) hade förr större funktionsbibliotek

– GNU Octave, som har öppen källkod, och är delvis kompatibelt– MathCAD, Maple och Mathematica är bättre på symboliska (icke-

numeriska) beräkningar• MathCAD har ett icke-kommandobaserat användargränssnitt, ett slags ”kalkylblad

för matematiker”– Kalkylbladsprogram såsom Excel används och är mer utbredda, men

mycket mer begränsade.– Avancerade miniräknare

8

Command window:Här skriver du in kommandonWorkspace:

Variabellista

Commandhistory

Så här ser Matlab ut

9

Fler MATLAB-fönster som kan öppnas

Figure window

M-file editor

Array editor

10

Hur får man hjälp?helpfunktionsnamn

Visar oformaterad text i kommandofönstret

doc funktionsnamn

Visar HTML-dokumentationi en särskild browser.

11

Operationer i Matlab

2^3

sqrt(144)

2*4+3/8-6

MatlabsyntaxMatematisk notation

2 × 4 +38

− 6

144

32

12

Logaritmer

log(2.79)

log10(1000)

log2(1024)

ln(2.79)log(1000)log2(1024)

13

Trigonometriska funktioner

sin(pi/2)

cos(pi)

tan(pi/4)

cot(pi/4)

asin(1)

sin(π2

)

cos(π )

tan(π4

)

cot(π4

)

asin(1)

Matlab syntaxMatematisk notation

14

Dynamiskt typade variabler• En variabel är en del av datorns arbetsminne• Matlabs variabler kallas Arrayer, vilket betyder att

de kan bestå av flera element (flera värden)• Matlab har dynamiskt typade arrayer, vilket

innebär:– Första gången man tilldelar en array ett värde så

definieras den, dvs det skapas en plats i datorns minne för variabeln.

• Exempel: minVariabel = 1– Arrayerna kan automatiskt ändra storlek, utan att

särskilda deklarationskommandon krävs• Exempel: minVariabel = [ 1 3 7] % minVariabel är nu en

radvektor bestående av 3 element

15

Workspace• Workspace är de variabler som är åtkomliga

från kommandofönstret• Så fort man definierar en variabel så visas

den i delfönstret Workspace

• Radera alla variabler ur workspace med: clear

16

Val av variabelnamn

• Matlab skiljer mellan versaler och gemener, alltså variabeln area är inte samma som variabeln Area

• Ord som används till annat är olämpliga som variabelnamn t.ex: ans, pi, i, j, plot.

• Första tecknet i variabelnamnet måste alltid vara en bokstav, inga siffror eller specialtecken som $,@,€,… får användas.

• Svenska tecknen Å,Ä,Å kan inte användas.

17

Skalär, vektor och matris• En skalär är en array av storleken 1x1, dvs ett

element. – Exempel: x = 1.

• En vektor av längden N är en-dimensionell array av storleken 1 x N (radvektor) eller en N x 1 (kolumnvektor).– Exempel: x = [10 20] är en radvektor av längd 2.– y = [10;20;30] är en kolumnvektor av längd 3.

• En matris är en tvådimensionell array av storleken N x M. Skalärer och vektorer är specialfall av matriser.

• En tredimensionsionell array av storleken M x N x L består av L matriser, var och en av storlek M x N.

• En tom array har noll element.– Exempel: tom_matris = []

18

Definiera matriser i matlab• [ ] används vid definiering av vektorer och

matriser.

2 4 19 −1 0

⎝ ⎜

⎠ ⎟

2 4 3 1 8( )

[2 4 1; 9 -1 0]

[2 3 3 1 8]

Matematisk notation Matlabsyntax

19

Mer om matriser

2 3 57 6 1

⎝ ⎜

⎠ ⎟

Anta följande matris [2 3 5; 7 6 1]Transponering av vektornkan man lätt få med hjälp avtranspose operatorn ’

[2 3 5; 7 6 1]’2 3 57 6 1

⎝ ⎜

⎠ ⎟

Τ

≡2 73 65 1

⎜ ⎜ ⎜

⎟ ⎟ ⎟

20

Manipulering av matriser

M(4)

M(1:4:9)

M(2:3,1:2)

M =11 12 1314 15 1617 18 19

⎜ ⎜ ⎜

⎟ ⎟ ⎟

M =11 12 1314 15 1617 18 19

⎜ ⎜ ⎜

⎟ ⎟ ⎟

M =11 12 1314 15 1617 18 19

⎜ ⎜ ⎜

⎟ ⎟ ⎟

21

Manipulering av matriserM(4)=99

M(1:4:9)=[ 3 6 2]

M(2:3,1:2)=[ 3 6 ;2 4]

M =11 12 1314 15 1617 18 19

⎜ ⎜ ⎜

⎟ ⎟ ⎟

M =11 99 1314 15 1617 18 19

⎜ ⎜ ⎜

⎟ ⎟ ⎟

M =3 12 13

14 6 1617 18 2

⎜ ⎜ ⎜

⎟ ⎟ ⎟

M =11 12 133 6 162 4 19

⎜ ⎜ ⎜

⎟ ⎟ ⎟

M =11 12 1314 15 1617 18 19

⎜ ⎜ ⎜

⎟ ⎟ ⎟

M =11 12 1314 15 1617 18 19

⎜ ⎜ ⎜

⎟ ⎟ ⎟

22

Multiplikation och addition med skalär

Exempel: [1 2;3 4] * 0

resulterar i ans =

0 00 0

Exempel: [1 2;3 4] + 10

resulterar i ans =

10 2030 40

”Snygga” MATLAB-program utnyttjar arrayoperationer istället för slingor (loopar). Det ger kompakta och ofta mer lättöverskådliga och snabba program.

23

Inre vektorproduktRadvektor * Kolumnvektor = SkalärVektorerna måste ha samma längd, annars ”Error”Exempel: [1 2 3]*[10; 0; 20]

resulterar i 1*10 + 2*0 + 20*3 = 70

Matematisk definition:

( )

1

21 2 1 1 2 2

1

N

N k k N Nk

N

bb

a a a a b a b a b a b

b=

⎛ ⎞⎜ ⎟⎜ ⎟ = = + + +⎜ ⎟⎜ ⎟⎝ ⎠

∑i

24

Yttre vektorproduktKolumnvektor av längd N * Radvektor av längd M

= Matris av storlek M x NKompakt notation för alla tänkbara produkt-kombinationer av elementenExempel: [10; 20]*[1 2 3]

resulterar i

Matematisk definition:

( )

1 1 1 1 2 1 4

2 2 1 2 2 2 41 2

1 2

N

N N N N N

a a b a b a ba a b a b a b

b b b

a a b a b a b

⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟=⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠

i

10 1 10 2 10 3 10 20 3020 1 20 2 20 3 20 40 60

⋅ ⋅ ⋅⎛ ⎞ ⎛ ⎞=⎜ ⎟ ⎜ ⎟⋅ ⋅ ⋅⎝ ⎠ ⎝ ⎠

25

Matrismultiplikation

1 3 25 4 0

⎝ ⎜

⎠ ⎟

1 30 10 6

⎜ ⎜ ⎜

⎟ ⎟ ⎟ =

1 185 19

⎝ ⎜

⎠ ⎟

Så här skriver man ovanstående i Matlab:[1 3 2; 5 4 6] * [1 3; 0 1; 0 6]

Kombination av inre och yttre produkt. Antal kolumner i första matrisen måste vara lika med antal rader i den andra. Annars Error.Hur man räknar ut? Vänta till kursen Linjär algebra. Visar detta enbart som varning för operatorn *.

26

Andra elementvisa arrayoperationerVarning: På samma sätt som * så resulterar / och ^ applicerade på arrayer inte i ”vanlig” operationer, utan i vektor- och matrisoperationer enligt definitioner som ni får lära er i kursen Linjär Algebra.

./ ger elementvis division. Ex: 1 ./ [2 4] ger [0.5 0.25]

.^ ger elementvis upphöjt till. Ex: [2 3]^2 ger [4 9].

Tag därför för vana att sätta en punkt före * / och ^ .

+ och – hanterar elementvisa arrayoperationer, och behöver inte någon punkt.

27

För fler exempel

Se dokumentet ”Introduction to Matlab language: Examples and exercises”

28

Kommentarer i Matlab

• I de flesta programspråk finns det möjlighet att skriva kommentarer blandad i koden.

• Kommentarer är till för att andra som ska redigera programmet ska få lite lättare att förstå tanken bakom koden.

• Kommentarer kan också vara ett minnesstöd – man glömmer lätt hur man har tänkt.

• I Matlab är allt som står till höger om tecknet % kommentarer.

29

Villkor – if-satser• I vissa lösningar behöver man ibland skriva

ett program där ett val måste göras beroende på ett villkor uppfylls eller inte.

price=input('What is the price of the book? ');if price >= 135

disp('very expensive but')enddisp(['I buy one copy of the book.'])

30

If-syntax

if villkorsatssats

end

if villkorsatssats

elsesats

end

if villkor1sats

elseif villkor2sats

end

31

Exempel på if-else• I vissa lösningar behöver man ibland skriva

ett programmet där ett val måste göras beroende på ett villkor uppfylls eller inte.

T.ex:age = input(’How old are you? ') ;if age >= 20

disp('welcome to systembolaget')else

a = 20-age ; disp(['sorry, you must wait ' num2str(a) ' years'])

End• Semikolon i slutet av en sats undertrycker

utskrift.

32

Relationsoperatorer• "<" - mindre än• "<=" – mindre än eller lika med• ">" - större än• ">=" – större än eller lika med• "==" – test om lika med ("=" betyder

tilldelning)• "~=" - not equal to• "&" - AND• "|" - OR• "~" - NOT

33

Slingor

• Om man vill upprepa något flera gånger använder man sig av en slinga (looppå engelska)

• Det finns två typer av slingor i Matlab:– for– while

34

Slingor - syntax

• While-satswhile logiskt_uttryck

sats

sats

end

• For-satsfor variabel = vektor,

sats

sats

end

35

Exempel på for-slinga

Matematisk notation:

MATLAB-kommandon:for k=[1 2 3],

x(k)= k^2

end

Utskrift:x =

1x =

1 4x =

1 4 9

2 , för alla 1, 2, 3kx k k= =

36

För fler exempel

Se dokumentet ”Introduction to Matlab language: Examples and exercises”