25
1 Introduktion till Matlab Föreläsning 2 FY021G Ingenjörsvetenskap [email protected] Reviderad 2007-09-23

Introduktion till Matlab Föreläsning 2

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

1

Introduktion till MatlabFöreläsning 2

FY021G Ingenjö[email protected]

Reviderad 2007-09-23

2

Examination• En enkel dugga (kort prov, ca 20 minuter) inleder

labbtillfä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 och VG 2 poäng bidrag till den poängsiffra som slutbetyget grundar sig på.

3

Förberedelse inför labben• Förberedelse inför duggan:

– Repetera exemplen i dokumentet ”Examples and exercises”.

– Repetera denna slide show (publiceras i WebCT i eftermiddag).

• Läs ev. i läroboken ”Introduction to MATLAB 7”, kap 1 till 6 om det som känns oklart.

• Läs i läroboken kapitel 8.2-8.3, om regressionsanalys

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

4

Dagens agenda

• Fortsättning genomgång av dokumentet ”Introduction to the Matlab language –Examples and exercises”

• Matlab-script och Matlab-funktioner• Diagram• Introduktion till Linjär regression

5

Command window:Här skriver du in kommandon

Workspace:Variabellista

Commandhistory

Så här ser Matlab ut

6

Fler MATLAB-fönster som kan öppnas

Figure window

M-file editor

Array editor

7

Spara Matlab-program i en .m-fil

Man vill ofta spara matlabkommandon i en fil av följande skäl:– Man besparar tid av att slippa skriva en sekvens

av kommandon om och om igen.– Man kan fortsätta arbetet vid annat tillfälle.– Man vill kunna utöka språket med egna

kommandon och funktioner, och på så sätt kunna återanvända kod och undvika kodupprepning.

– Man vill göra stora program strukturerade genom att dela upp dem i delprogram, som i sin tur delas upp i delprogram, alla med lättbegripliga namn.

8

Mer om .m-filer

.m-filer redigeras med Matlabkommandot”edit”, som startar ett särskilt redigeringsprogram.

Det finns två typer av .m-filer: • Matlab-script• Matlab-funktioner

M-file redigeringsprogram

9

Matlab-script• Ett Matlab-script är en lista av matlab-kommandon i

samma .m-fil.

• Om filnamnet är myscript.m så anropas scriptetgenom att skriva kommandot

myscript

eller klicka på ”Run” i redigeringsprogrammet.

• Alla variabler ligger i samma workspace som kommandofönstret kommer åt. Enkelt men riskabelt. Två script kan råka ha samma variabelnamn.

10

Funktioner• Funktioner är .m-filer där första raden börjar

med ordet ”function”. Exempel:function myfunction(x1, x2)% Två inargument (parametrar på matematikspråk)

ellerfunction y = myfunction% Ett utargument (värdevariabel på matematikspråk)

Eller Function [y1 y2]=myfunction(x).% Två utargument och ett inargument.

• Funktionen måste sparas i filen myfunction.m

11

Skillnad mellan funktioner och script

• Funktioner kan ha in- och utargument. (Parametrar och värden på matematikspråk).

• Funktioners variabler är lokala. Variabeln x i en funktion är inte samma som variabeln x i en annan funktion, eller i workspace. Variablerna är således inkapslade, skyddade från namnkonflikter.

• Funktioner är mer beräkningseffektiva än script, därför att förkompilleras första gången de körs (översätts till effektiv bytekod, som i sin tur ofta översätts till s.k. maskinkod via just-in-time-kompilering). Vid script kompilleras eller interpreteras (tolkas) koden rad för rad medan den körs, även koden upprepas många gånger, vilket tar tid.

12

FunktionsexempelFöljande funktion skrivs i en fil som heter CToF.m

function y = cToF(x)

% cToF omvandlar från grader

% Celcius till Fahrenheit

y = 32+1.8*x;

Ovanstående sparas i filen cToF.m.

Help CToFger första kommentarraderna:

cToF omvandlar från grader Celcius till Fahrenheit

Exempel på Funktionsanrop i kommandofönstret:

C = 100

F = cToF(C)

Detta resulterar i:F =

212

13

Rita diagram för ett matematiskt uttryck

1. Först måste man tala om vilka värden på den horisontella axeln som ska plottas.

Exempel: x=0.1:0.01:1;

betyder x=[0.1 0.11 0.12 … 1];

2. Sedan beräknas värdena på den vertikala axeln. Exempel: y=1./x.^2;

3. Till slut används plot(x,y)

0 0.2 0.4 0.6 0.8 10

20

40

60

80

100

14

Använda plot• plot(x,y), där x och y är vektorer, ritar en

kurva bestående av linjer som förbinder värdena i x och y, dvs där mellanliggande värden beräknats genom linjär interpolation

• plot(x,y, ’r’) ritar en kurva med röd färg• plot(x,y, ’x’) sätter ett kryss vid varje värde,

men förbinder inte med en kurva (dvs utan interpolation)

• plot(x,y, ’o-’) sätter en ring vid varje värde, och förbinder dem dessutom med en kurva

• Skriv ”doc plot” för mer information.

15

Fler användbara ritfunktionertitle(’Grafrubrik’) xlabel(’X-axelns namn’) ylabel(’Y-axelns namn’)grid % Visa rutnätlegend(’Beskrivning kurva 1’,’Beskrivning kurva

2’)

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

20

40

60

80

100

X-axelns rubrik

Y-a

xeln

s ru

brik

Grafrubrik

Beskrivning av kurva 1

16

Ändå fler användbara ritfunktioner

loglog(x,y) % Logaritmiska x- och y-axlar:

semilogx(x,y) % Logaritmisk x-axel, linjär y-axelsemilogy(x,y) % Linjär x-axel, logaritmisk y-axelbar % Stolpdiagramshg % Visa det aktuella graf-fönstret.figure % Skapa nytt figurfönsteraxis(1,2,3,4) % Gradera x-axeln från 1 till2

% och y-axeln från 3 till 4

10-1 100100

101

102

17

Flera kurvor i samma diagram• Alternativ 1: (x, y1, y2 och y3 är kolumnvektorer)

plot(x,y1) hold onplot(x,y2)plot(x,y3)hold off

• Nackdelar: Kurvorna får samma färg, eller man måste ange färg manuellt. Funktionen ”Legend” funkar inte.

• Alternativ 2:plot(x,y1,’-’, x,y2,’-’, x,y3,’-’)legend(’Kurva1’, ’Kurva2’, ’Kurva3’)

• Alternativ 3:plot([x x x], [y1 y2 y3]) legend(’Kurva1’, ’Kurva2’, ’Kurva3’)

dvs bilda matriser där varje kolumn motsvarar en kurva.

1 1.5 2 2.5 3 3.5 40

0.5

1

1.5

2

Kurva 1Kurva 2Kurva 3

18

Subplot - Flera diagram i samma figurSubplot(3,2,5) % Skapar utrymme för 3*2=6 diagram i samma figur, i tre rader och tvåkolumner, och gör diagram nummer 5 (av 6) aktivt.

plot(x,y) % Plottas i diagram 5

subplot(3,2,2) % Aktiverar diagram 2.

loglog(x,y) % Plottas i diagram 2

19

Linjär regression.

• Se kapitel 8.2 – 8.3• Läs igenom som förberedelse inför

labben. (Behandlas emellertid inte påduggan.)

20

Fel i läroboken kap 8.2-8.3:

• Sid 239: Det ska ståx=0:5;

istället för x=0.5;

• Sid 241: Det ska ståsum_sq=sum((y-y2).^2)

istället försum_sq=sum((y-y2)^2)

• Sid 250: Det ska stå polytool ist. f. cftool.

21

RegressionsanalysAtt ”passa” ett polynom till mätdata, för att minimera det sammanlaggdakvadratiska avståndet mellan mätdata och polynomkurvan.

Linjär regressioninnebär att man identifierar ett första-gradspolynom, dvs en rät linje.

22

Polyfit – Anpassa polynomkoefficienter

POLYFIT Fit polynomial to data.P = polyfit(X,Y,N) finds the coefficients of a polynomial P(X) of degree N that fits the data Y best in a least-squares sense. P is a row vector of length N+1 containing the polynomial coefficients in descending powers, P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).

23

Polyval – Beräkna polynom

POLYVAL Evaluate polynomial.Y = polyval(P,X) returns the value of a polynomial P evaluated at X. P is a vector of length N+1 whose elements are the coefficients of the polynomial in descending powers.

Y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X + P(N+1)

24

The Basic Fitting tool

• Plotta en kurva• I figurens meny, välj Tools -> Basic

Fitting.• Kryssa för t.ex. Linear.

25

Polytool – interaktivt verktyg

Interactive plot of fitted polynomials and prediction intervals

Polytool(x,y) fits a line to the vectors x and y and displays an interactive plot of the result in a graphical interface. You can use the interface to explore the effects of changing the parameters of the fit and to export fitresults to the workspace.