Øvingsforelesning TDT4105 Matlab - Øving 2. Pensum

Øvingsforelesning TDT4105 Matlab
Øving 2. Pensum: Funksjoner, matriser, sannhetsuttrykk,
if-setninger.
Benjamin A. Bjørnseth
8. september 2015
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
2
Innhold
Disclaimer
Funksjoner
Matriser
Matriseoperasjoner
Sannhetsuttrykk
If-setninger
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
3
Oversikt
Disclaimer
Funksjoner
Matriser
Matriseoperasjoner
Sannhetsuttrykk
If-setninger
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
4
Til dere som har lastet ned foilene
— Denne gangen inneholder foilene hovedsakelig støttefigurer og
eksempeloppgaver. Brorparten av øvingsforelesningens innhold
finnes i filen demonstrasjonsmal.m. som ligger i vedlegget.
— Det er også lastet opp et ekstra slidesett med notater inkludert.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
5
Oversikt
Disclaimer
Funksjoner
Matriser
Matriseoperasjoner
Sannhetsuttrykk
If-setninger
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
6
Motiverende eksempel
— Eksempeloppgave: Lag et program som leser inn radius og høyde for
en sylinder fra en bruker, og som skriver ut sylinderens areal og
volum til skjerm.
V_sylinder
= ______ * h
A_sylinder
= 2*_______
+ ________
h
r
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
7
Egne funksjoner
— Opprett ny fil
• funksjonsnavn.m
function returverdi = funksjonsnavn(parameter1, parameter2)
<kode>
end
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
8
Eksempeloppgaver, forskjellige
parametere og returverdier
1. Lag en funksjon som inverterer et tall.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
8
Eksempeloppgaver, forskjellige
parametere og returverdier
1. Lag en funksjon som inverterer et tall.
2. Lag en funksjon som regner ut a + b*c
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
8
Eksempeloppgaver, forskjellige
parametere og returverdier
1. Lag en funksjon som inverterer et tall.
2. Lag en funksjon som regner ut a + b*c
3. Lag en funksjon som returnerer et tall lest inn fra brukeren.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
8
Eksempeloppgaver, forskjellige
parametere og returverdier
1. Lag en funksjon som inverterer et tall.
2. Lag en funksjon som regner ut a + b*c
3. Lag en funksjon som returnerer et tall lest inn fra brukeren.
4. Lag en funksjon som tar en liste studenter, og regner ut hvor mange
studenter som blir igjen hvis vi deler dem inn i grupper på tre.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
8
Eksempeloppgaver, forskjellige
parametere og returverdier
1. Lag en funksjon som inverterer et tall.
2. Lag en funksjon som regner ut a + b*c
3. Lag en funksjon som returnerer et tall lest inn fra brukeren.
4. Lag en funksjon som tar en liste studenter, og regner ut hvor mange
studenter som blir igjen hvis vi deler dem inn i grupper på tre.
5. Lag en funksjon som returnerer en vektor med en gitt startverdi, en
gitt steglengde mellom element, og et gitt antall element.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
9
Forskjell på retur og utskrift
I fil “funksjon.m”
I kommandovindu
function y = funksjon(x)
y = x + x
disp(y);
fprintf(‘%d’, y);
end
y = 12;
x = funksjon(y);
Globale variabler
y = 12
www.ntnu.no
Lokale variabler
funksjon(12)
x = 12
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
10
Forskjell på retur og utskrift
I fil “funksjon.m”
I kommandovindu
function y = funksjon(x)
y = x + x
disp(y);
fprintf(‘%d’, y);
end
y = 12;
x = funksjon(y);
-
Utskrift sender verdier til skjerm
Globale variabler
y = 12
www.ntnu.no
Lokale variabler
funksjon(12)
x = 12
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
11
Forskjell på retur og utskrift
I fil “funksjon.m”
I kommandovindu
function y = funksjon(x)
y = x + x
disp(y);
fprintf(‘%d’, y);
end
y = 12;
x = funksjon(y);
-
Utskrift sender verdier til skjerm
(mangler
semikolon)
Globale variabler
y = 12
www.ntnu.no
Lokale variabler
funksjon(12)
x = 12
y = 24
y =
“y =
24”
24
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
12
Forskjell på retur og utskrift
I fil “funksjon.m”
I kommandovindu
function y = funksjon(x)
y = x + x
disp(y);
fprintf(‘%d’, y);
end
y = 12;
x = funksjon(y);
-
Utskrift sender verdier til skjerm
Globale variabler
y = 12
www.ntnu.no
Lokale variabler
funksjon(12)
x = 12
y = 24
y =
24
24
24
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
13
Forskjell på retur og utskrift
I fil “funksjon.m”
I kommandovindu
function y = funksjon(x)
y = x + x
disp(y);
fprintf(‘%d’, y);
end
y = 12;
x = funksjon(y);
-
Utskrift sender verdier til skjerm
Globale variabler
y = 12
www.ntnu.no
Lokale variabler
funksjon(12)
x = 12
y = 24
y =
24
24
24
24
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
14
Forskjell på retur og utskrift
I fil “funksjon.m”
I kommandovindu
function y = funksjon(x)
y = x + x
disp(y);
fprintf(‘%d’, y);
end
y = 12;
x = funksjon(y);
-
Utskrift sender verdier til skjerm
Retur av verdier er overføring av lokale variabler til der
funksjonen ble kalt.
Globale variabler
y = 12
www.ntnu.no
Lokale variabler
funksjon(12)
x = 12
y = 24
y =
24
24
24
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
15
Forskjell på retur og utskrift
I fil “funksjon.m”
I kommandovindu
function y = funksjon(x)
y = x + x
disp(y);
fprintf(‘%d’, y);
end
y = 12;
x = funksjon(y);
-
Utskrift sender verdier til skjerm
Retur av verdier er overføring av lokale variabler til der
funksjonen ble kalt.
Globale variabler
y = 12
Lokale variabler
funksjon(12)
Hva er y?
www.ntnu.no
x = 12
y = 24
y =
24
24
24
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
16
Forskjell på retur og utskrift
I fil “funksjon.m”
I kommandovindu
function y = funksjon(x)
y = x + x
disp(y);
fprintf(‘%d’, y);
end
y = 12;
x = funksjon(y);
-
Utskrift sender verdier til skjerm
Retur av verdier er overføring av lokale variabler til der
funksjonen ble kalt.
Globale variabler
y = 12
x = 24
www.ntnu.no
Lokale variabler
funksjon(12)
24
x = 12
y = 24
y =
24
24
24
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
17
Eksempeloppgave
— Løs introduksjonseksempelet.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
18
Oversikt
Disclaimer
Funksjoner
Matriser
Matriseoperasjoner
Sannhetsuttrykk
If-setninger
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
19
Motiverende eksempel
— Lag et program som sjekker om et brett i gamblingspillet Extra har
vunnet noe gitt et brett som angir hvorvidt en rute er dekket eller ikke.
Fylt brett
Fylt ramme
www.ntnu.no
Fylt indre felt
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
20
Eksempeloppgave: tilordning
1. Sett alle de siste rundetidene til 30.
2. Sett rundetid 1 og 3 for løper 2 og 3 til 29.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
21
Eksempeloppgave
— Løs introduksjonseksempelet: Lag en funksjon som angir hvorvidt et
gitt Extra-brett av markeringer er et vinnerbrett eller ikke.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
22
Oversikt
Disclaimer
Funksjoner
Matriser
Matriseoperasjoner
Sannhetsuttrykk
If-setninger
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
23
Motiverende eksempel
Lag et program som lar en generere snittkarakter for elevene i en klasse,
med korrekt vekting for forskjellige fagstørrelser.
Student
1
Fagvekt
2
3
...
Fag
TDT4105
6
4
TXX41YY
4
...
5
...
...
www.ntnu.no
4
...
TDT4105
7.5
TXX41YY
7.5
15
...
7.5
...
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
24
Eksempeloppgave
— Lag de fire første kvadrattallene, gitt følgende matrise:
M = [ 1, 2; 3, 4 ];
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
25
Eksempeloppgave
— Løs introduksjonsproblemet:
1. Lag en funksjon som regner snittkarakter for alle elever gitt en matrise
med karakterer og en vektor med vekter (matriseoperasjon).
2. Lag en funksjon som regner snitttkarakter for én elev, gitt flere semestre
med karakterer og en tilsvarende matrise med vekter (elementvis
operasjon).
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
26
Oversikt
Disclaimer
Funksjoner
Matriser
Matriseoperasjoner
Sannhetsuttrykk
If-setninger
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
27
Motiverende eksempel
— Lag et program som sjekker om et brett i gamblingspillet Extra har
vunnet noe gitt en serie med trukne tall.
Fylt brett
Fylt ramme
www.ntnu.no
Fylt indre felt
11
28
45
59
75
14
22
38
71
9
13
49
66
63
7
1
2
72
19
33
67
68
44
40
20
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
28
Sannhetsuttrykk
— Som matteuttrykk, bortsett fra:
• Resultatet er enten true eller false
— Også kalt 1 og 0
• Andre operatorer
• Lavere presedens
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
29
Operatorer
— Sammenlikne verdier
Lik
Ulik
Mindre enn
Mindre enn eller lik
Større enn eller lik
Større enn
www.ntnu.no
==
~=
<
<=
>=
>
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
30
Kombinasjon av sannhetsverdier
— Flere operatorer
Òg
Eller
Ikke
&&
||
~
— Sannhetstabeller
x
0
0
1
1
www.ntnu.no
y
0
1
0
1
x && y
0
0
0
1
x || y
0
1
1
1
~x
1
1
0
0
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
31
Eksempeloppgave
— Anta at tilbudspris på kino er 100, tilbudspris på restaurant er 150, og
budsjettet er 200. Avgjør om det blir penger til overs, ved å bruke
våre tidligere definerte sannhetsvariabler.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
32
Eksempeloppgave
— Hent ut alle rundetidene som er raskere enn den raskeste tiden til
løper 2.
— Hent tidene hvor løper tre var raskere enn løper 1.
— Regn ut hvor mange ganger løper tre var raskest.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
33
Eksempeloppgave
— Løs introduksjonsproblemet: lag en funksjon som lager et markert
Extra-brett fra et vanlig brett og en vektor med trukne verdier, som
bruker funksjonen fra matrise-seksjonen til å returnere rett svar.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
34
Oversikt
Disclaimer
Funksjoner
Matriser
Matriseoperasjoner
Sannhetsuttrykk
If-setninger
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
35
Motiverende eksempel
Lag et program som skriver ut på hvilken måte, hvis noen, et Extra-brett
er et vinnerbrett.
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
36
If-setninger
— Gjør forskjellige ting basert på betingelser
— Gjør Matlab til mer enn en vanlig kalkulator
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
37
Eksempler
if 2 + 2 == 4
disp(’Som forventet’);
else
disp(’Oi’);
end
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
38
Eksempler
x = odds_for_RBK_seier();
if x > 100
% Selv ikke RBK er saa gode
x = 100;
end
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
39
Eksempler
if beste_flysete_ledig()
book_sete_nuh();
elseif nest_beste_ledig()
book_sete_imorgen();
elseif nestnest_beste_ledig()
book_hvis_desperat();
else
staycation_ftw();
end
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
40
Oppgaver
— Skriv ut værmelding basert på temperatur.
Temperatur Melding
-∞ – -50
Sola har sluknet
-50 – -20
Kakaovær
-20 – -10
Grønn Swix FTW
-10 – 10
Symmetrisk om null.
10 – 15
Trondheimssommer
15 – ∞
Varmt nok
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
40
Oppgaver
— Bestem månedens diett basert på budsjetterte inntekter og utgifter
Overskudd Diett
>0
Ingers rugbrød
0
Kneip
<0
Barkebrød
www.ntnu.no
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab
40
Oppgaver
— Implementer følgende mattefunksjon
(
x
absoluttverdi(x) =
−x
www.ntnu.no
if x >= 0
if x < 0
Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab