Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Mas135 forelesning7
1. MAS135: MATLAB for Mechanical
Engineers
Forelesning 7 : Funksjoner i MATLAB:
egendefinerte funksjoner; anonyme
funksjoner; globale og lokale variable
Victoria Popsueva
Bergen, C208
01 oktober 2018
2. Egendefinerte funksjoner
• Matematiske funksjoner: y = f(x) : en funksjon tilordner et tall x til et
tall y gjennom et matematisk uttrykk
• ”Vi putter inn x og får ut y”
• F.eks en funksjon f(x) = 2x -3, f(1) = -1 vi ”putter inn” argumentet x=1
og ”får ut” y = -1
3. Funksjoner i MatLab
• MatLab har innebygde funksjoner, slike som sin(x), cos(x), size(x),
length(x), input(’’) og mange flere…
• Felles for alle funksjoner: funksjonsnavn(argument) som i f(x)
• Argumentet kan være et eller flere tall eller vektorer – akkurat som i
matematikk f(x,y,z,t)
4. Egendefinerte funksjoner
• Ofte trenger vi å lage våre egne funksjoner -> egendefinerte
funksjoner
• Ligner på scripter (inneholder et sett med operasjoner/kommandoer,
kan gjerne inneholde kontrollstrukturer)
• Men har noen vesentlige forskjeller, må f.eks alltid ha en egen M-fil (en
fil per funksjon) – kan ikke skrives i kommandovindu!
5. Egendefinerte funksjoner
• M-filen skal ha samme navn som funksjonen
• Har en bestem syntaks: på første linjen i filen skal det stå
• function [output] = funksjonsnavn(input)
• Outputvariabelen er ’f(x)’ og kan være en eller flere tall eller vektorer,
vi kan selv velge navn.
• Input/argumentvariabel er ’x’, kan også være både tall og vektorer, så
mange vi trenger, men ikke flere enn nødvendig!
6. Egendefinerte funksjoner
• Hvis en funksjon ikke produserer output (for eksempel bare lager et
plott) kan man skrive
• function funksjonsnavn(input)
• Det gjelder samme regler for valg av funksjonsnavn som for
variabelnavn
• Etter den første linjen er det vanlig og lurt å skrive % kommentar – hva
funksjonen gjør, hva slags input/output den trenger
7. Eksempel
• I en fil som heter funksjon.m:
• function y = funksjon(x)
% evaluerer uttrykket f(x) = 2x^2 -2 for en gitt x
• y = 2*x^2 -1;
• I kommandovinduet:
• >> funksjon(2)
• ans =
• 7
8. Eksempel (forts)
• NB! Variablene x og y i funksjonen er såkalte lokale variable
• Lokale variabler ”lever” kun innenfor funksjonen! De er ikke ”synlige”
fra kommandovinduet eller workspace
• >> y
• ??? Undefined function or variable 'y'.
9. Lokale variable
• Siden lokale variable kun eksisterer innenfor funksjonene, kan vi bruke
variable med samme navn utenfor funksjonene
• >> y=3;
• >> funksjon(y)
• ans =
• 17
10. Globale variable
• function y = funksjon(x)
• % evaluerer uttrykket f(x) = 2x^2 -2 for en gitt x
• global A1
• A1 = 2*x;
• y = 2*x^2 -1 + A1;
11. Globale variable
• For at variabelen skal kunne brukes i andre funksjoner eller utenfor
funksjonsfilen, må den defineres som global, både i funksjonsfilen og i
kommandovinduet (eller et hovedscript, som bruker funksjonen)
• Lurt å bruke STORE_BOKSTAVER for å skille fra lokale variable
• For eksempel naturkonstanter som G, TETTHET_VANN,
ELASTISITETSMODUL, …
12. Bruk av scripter og funksjoner
• Funksjoner blir ofte brukt i kombinasjon med et hovedscript
• I hovedscriptet kan vi f.eks lese inn inputdata fra skjerm eller fil, og så
kan vi sende input til funksjoner som utfører beregninger
• På denne måten unngår vi å få altfor store scripter ved å ”gjemme” alle
matematiske detaljer inne i funksjonene
• Spesielt viktig i større programmer på noen tusen linjer!
13. ”Anonyme funksjoner”
• Når vi gjør mange små beregninger som gjentas mange ganger
• Vil slippe å lage mange funksjonsfiler
• Funksjonene er så små at de kan få plass i scriptet uten å gjøre det
uoversiktlig (noen få linjer)
14. Anonyme funksjoner
• Anonyme funksjoner har følgende syntaks:
• Navn = @ (argumenter) uttrykk
• Navnet velger vi selv, og vi kan ha en eller flere argumenter.
• Uttrykket er formelen vi skal beregne
• @ -tegnet betyr at vi lager en ”peker” til funksjonsuttrykket
15. Eksempel
• Dette kan vi skrive i kommandovinduet (eller et script):
• >> cube = @ (x) x^3
• >> cube(2)
• ans =
• 8
16. Eksempel (forts)
• Det kan være funksjoner med flere variable som input og output:
>> f = @ (x,y) x.^2 +y.^2 + 2
• Og de kan være vektorer:
• >> f([0 1 2],[-1 0 1])
• ans =
• 3 3 7
17. Oppgave
• Lag 3-4 forskjellige anonyme funksjoner, for eksempel
• f(x) = sin(x)*cos(x)
• g(x) = sin(x)^3
• h(x) = 0.5*sin(2*x)
• Lag et hovedscript der man kan velge hvilken av disse funksjonene
man vil plotte (ved hjelp av en switch-test).