Introduktionskurs i MATLAB (TSRT04) · Kursupplagg¨ I 1 forel¨ asning, 2¨ 2h lektioner, 5 2h...
Transcript of Introduktionskurs i MATLAB (TSRT04) · Kursupplagg¨ I 1 forel¨ asning, 2¨ 2h lektioner, 5 2h...
MM
YS
Introduktionskurs i MATLAB (TSRT04)VT2 2019
Hakan Johansson
Division of Communication SystemsDepartment of Electrical Engineering (ISY)
Linkoping University, Swedenwww.commsys.isy.liu.se/en/student/kurser/TSRT04
Om kursen
Grunderna i MATLAB
Vektorer och matriser
Anvanda inbyggda funktioner
Skript och funktioner
Visualisering
Kontrollstrukturer
Sammanfattning
1/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Malet med kursenKursen ska ge grundlaggande praktiska kunskaper omprogrammeringsspraket Matlab, som anvands till tekniskaberakningar. Kursen kan ses dels som en forberedelse till ettstorre antal kurser dar Matlab anvands, dels som ett tillfalle attlara sig beharska ett kraftfullt ingenjorsverktyg.
Efter fullgjord kurs forvantas studenten kunna:I anvanda Matlab som miniraknare for bade skalarer och
matriser: Anvanda elementara funktioner och definieravariabler.
I konstruera enkla skript och funktioner.I anvanda kontrollstrukturer (if-satser, for- och while-loopar) i
enkla exempel.I presentera resultat av berakningar och askadliga
datamangder genom grafiska figurer.I anvanda hjalpsystemet for att lara sig nya funktioner.
2/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
KursupplaggI 1 forelasning, 2×2 h lektioner, 5×2 h laborationer
I Notera skillnaderna: 2 hp ∼ 53 timmar av studier!I 37 h av sjalvstudier – betoning pa ”egen utforskning”.I Kursmaterial, information, instruktioner och lankar finns pa
kurshemsidan. Las igenom hela hemsidan!I Ladda ner MATLAB fran Studentportalen!I Ingen kursbok behovs – nagra bokforslag och videolankar
pa hemsidan
I Lektioner och laborationerI Lara genom att prova – basta sattet att lara MATLAB.I Arbeta i par: Hitta nagon med liknande
programmeringsbakgrund.I Vi forvantar oss att bada skriver och forstar koden.I Lektioner ar frivilliga, laborationer ar obligatoriska!
3/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Anmalan till lektioner och laborationer
2 grupperI Grupp A: Maria PoslukI Grupp B: Martin Allander
AnmalanI Valj din grupp – detta bor du gora omedelbart!I Anmalan till en lektionsgrupp (omfattar tva lektioner) och
en labbgrupp (omfattar fem labbar)I Anmalan gors i Lisam
4/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Examination1) Quiz
I Individuellt test om MATLABs grunder.I Sker vid forsta labben. Examinerar lektionsmaterialet.
2) PlottuppgiftI Plotta och visualisera en datamangd pa olika satt.
3) ”Mini-projekt”I Los ett litet problem och visualisera losningen.I Obligatoriskt deltagande i laborationer tills projektet ar
godkant.
Generella riktlinjerI Flera olika plottuppgifter och projekt (valj 1!)I All undervisning ar tillfallen att stalla fragor.I Mellan schemalagd tid: Sjalvstudier (5-6h/vecka)!I Redovisning pa engelska, endast vid labbtillfalle 3 och 5.
5/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Svarighetsgrad
I Forkunskaper: Linjar algebra, ProgrammeringI Universitetskurser har larandemal.I Svarighetsgraden beror alltid pa tidigare erfarenhet.I Skillnader i programmeringserfarenhet paverkar.I MATLAB kommer vara anvandbart i manga kurser.
6/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Vad ar MATLAB?MATrix LABoratory (MATLAB)
I Avancerade raknedosa for tekniska berakningarI Enkelt men kraftfullt programmeringssprakI Numeriska berakningar (ej symboler som Mathematica)I Tillgangligt for Windows, Mac, Unix, Linux, etc.I Nya versioner tva ganger per ar: 2016a, 2016b, 2017a, ...
I Bra: Enkelt att komma igang, enkelt att visualisera resultatI Bra: Manga exempel och verktygslador for olika omraden
(t.ex. matematik, statistik, optimering, telekommunikation,reglerteknik, biologi, finans).
I Daligt: Inte snabbast – men vanligtvis tillrackligt snabb!
I Bra for att testa ideer, losa forskningsproblem,utveckla/validera algoritmer
I Octave: Oppen kallkod – kompatibelt med MATLAB7/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Avdelningens forskning: 5G tradlosa kommunikationMal: Utveckla designprinciper for nasta generations mobilnat.
Forsta samspelet mellanI Datatakt per anvandare
(bit/s/user)I Datatakt per areaenhet
(bit/s/km2)I Energieffektivitet (bit/Joule)
Rollen for MATLAB:I Testa modellerI Utveckla algoritmerI Visualisera avvagningar 0
20
40
60
020406080100
0
2
4
6
8
10
12
Average User Rate [Mbit/s/user]
Average Area Rate [Gbit/s/km2]
Ene
rgy
Effi
cien
cy [M
bit/J
oule
]
Low User Rates,High Area Rates
High User Rates,Low Area Rates
8/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
MATLABs granssnitt
9/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
MATLAB som en raknedosaAnvand Command Window som en avancerad raknedosa
I Vanliga nummer: 30, pi (π), 1e2 (1 · 102)I Vanliga symboler: + - / *I Vanliga funktioner: cosinus (cos()), absolutbelopp (abs(·))
Exempel:
>> 2e3 + 300
ans = 2300
>> cos(pi)
ans = -1
>> abs(1+1i)
ans = 1.4142 10/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
VariablerI En ”container” att spara nummer i.I Har ett namn och ett varde.
>> a = 5
a = 5
>> b = a + 3
b = 8
(Det till hoger om = beraknas forst ochresultatet sparas i b.)Vad blir resultatet av:>> a = a + 2
a = 711/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
WorkspaceVariabler sparas i ”Workspace”, som ett forvaringsfack.
Undersok ditt workspace
I Om du inte valjer ett variabelnamn: Resultatet sparas i ansI Du kan klicka pa variabler i Workspace for att fa veta mer.I Du kan lista alla variabler med kommandot >>whos.
12/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Vektorer och matriserVektorer och matriser ar grunden i MATLAB.
I a =[4 5 6
]skrivs som >>a = [4 5 6]
(eller [4, 5, 6])
I b =
123
skrivs som >>b = [1; 2; 3]
I A =
[1 23 4
]skrivs som >>A = [1 2; 3 4]
Dessa sparas i Workspace – precis som alla andra variabler:
13/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Vektorer och matriserI Semikolon skippar utskrift av resultatet av ett kommando:>> a = [4 5 6];
I Matristransponat beraknas med .':>> a.'
ans =456
Skapa speciella matriser och vektorer:
I >>C = eye(2) ger C =
[1 00 1
].
I >>x = 3:6 ger x =[3 4 5 6
].
I >>y = 2:3:11 ger y =[2 5 8 11
].
14/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
MatrisoperationerUrsprungliga syftet med MATLAB: Matrisoperationer
I Skapa matriser:>> A = [1 2; 3 4];>> B = eye(2);
I Berakna multiplikation:
>> A*B
ans =1 23 4
dvs.[
1 23 4
] [1 00 1
](vanlig matrismultiplikation)
>> A.*B
ans =1 00 4
dvs.[
1 · 1 2 · 03 · 0 4 · 1
](elementvis multiplikation)
I Liknande: ˆ2 resp. .ˆ2, och / resp. ./15/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
MatrisoperationerDet finns massor av funktioner som hanterar matriser:
I Klassiska: exp() log() sin() cos() tan()I Ordningsfunktioner: min() max() mean() sort()
Vissa funktioner arbetar elementvis:
>> x = 0:(pi/2):(2*pi)
x = 0 1.5708 3.1416 4.7124 6.2832
>> y = sin(x)
y = 0 1.0000 0.0000 -1.0000 -0.0000
Vissa funktioner processar alla element gemensamt:
>> z = max(x)
z = 6.283216/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Indexering av matriser
Hur kommer man at vissa element i vektorer och matriser?
>> y = [0 1 0 -1 0];>> y(4)
ans = -1
>> A = [3 5 2; 7 8 6];>> A(1,2)
ans = 5
A =
[3 5 27 8 6
]
17/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Hur hittar man en funktion?Om du letar efter en funktion:
I Hur vet du om den existerar i MATLAB?I ”lookfor term” soker i dokumentationen efter textstrangen
”term”I Exempel: lookfor determinant letar efter en
matris-determinant-funktion
Hur tar du reda pa hur den fungerar?I ”help command” visar hjalptext for ”command”I ”doc command” ger mer ingaende information
Generell dokumentation:I ”doc” oppnar Matlab-dokumentationenI ”help” visar en lista over ”toolboxes” (samlingar av
funktioner for specifika andamal)18/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Bortom raknedosan: Skript
I Ett satt att kora flera kommandon flera gangar.I Spara nagra kommandon i en m-fil (filnamnet maste sluta
med .m) och kor alla genom att skriva namnet pa filen somett kommando.
I >>edit startar en redigerare som lampar sig val for attskriva m-filer.
I Dokumentation: Skriv kommentarer som % Comment
Stark rekommendation:I Anvand alltid skript!I Enkelt att reproducera resultat och skriva dokumentation.I Enkelt att gora sma andringar och kora om.
19/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: SkriptLina har sprungit 5 km pa 23 min och 15 s.
I Hon vill berakna tiden per km.I Hon vill gora samma sak nasta vecka.
m-fil computeRunPace.m
distance = 5; % Distance in kmminutes = 23; % Total time expressed inseconds = 15; % minutes and seconds
% Compute time per km in minutes:totalminutes = minutes + seconds/60;minperkm = totalminutes/distance
20/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Skript respektive funktioner
Vad ar skript?I Bara en uppsattning kommandon.I Anvander MATLABs generella Workspace.I Kan skriva over gamla variabler (overlappande namn).I Kan raka anvanda gamla variabler (kodningsfel).I Enklaste losningen: Borja skript med clear som tommer
Workspace.
Vad ar funktioner?
I Ett annat koncept: Har sina egna lokala Workspaces.I Fungerar precis som MATLABs egna funktioner.I Utmarkt satt att ateranvanda samma kod flera ganger.
21/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: Funktionm-fil computeRunPace.m
function minperkm = computeRunPace(dist, min, s)% Computes the time per km in minutes, given% the distance and the total time expressed% in minutes and seconds.
totalMinutes = min + s/60;minperkm = totalMinutes/dist;
end
I function – indikerar borjan pa en funktion
I funktionsnamn – ska vara samma som m-filen namn
I inparametrar – data som funktionen behover
I utparametrar – resultet som funktionen levererar
22/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: Anvanda funktionen
>>mpkm=computeRunPace(5,23,15)
mpkm = 4.65
Workspace:MATLAB
mpkm = 4.65
m-fil computeRunPace.m
function minperkm = computeRunPace(dist, min, s)% Computes the time per km...
totalMinutes = min + s/60;minperkm = totalMinutes/dist;
end
Workspace:computeRunPace
dist = 5min = 23s = 15totalMinutes =23.25minperkm = 4.65
23/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: Anvanda funktionen
>>mpkm=computeRunPace(5,23,15)
mpkm = 4.65
Workspace:MATLAB
mpkm = 4.65
m-fil computeRunPace.m
function minperkm = computeRunPace(dist, min, s)% Computes the time per km...
totalMinutes = min + s/60;minperkm = totalMinutes/dist;
end
Workspace:computeRunPace
dist = 5min = 23s = 15
totalMinutes =23.25minperkm = 4.65
23/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: Anvanda funktionen
>>mpkm=computeRunPace(5,23,15)
mpkm = 4.65
Workspace:MATLABmpkm = 4.65
m-fil computeRunPace.m
function minperkm = computeRunPace(dist, min, s)% Computes the time per km...
totalMinutes = min + s/60;minperkm = totalMinutes/dist;
end
Workspace:computeRunPace
dist = 5min = 23s = 15totalMinutes =23.25minperkm = 4.65
23/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: Anvanda funktionen
>>mpkm=computeRunPace(5,23,15)
mpkm = 4.65
Workspace:MATLABmpkm = 4.65
m-fil computeRunPace.m
function minperkm = computeRunPace(dist, min, s)% Computes the time per km...
totalMinutes = min + s/60;minperkm = totalMinutes/dist;
end
Workspace:computeRunPace
dist = 5min = 23s = 15
totalMinutes =23.25minperkm = 4.65
23/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Kombinera skript och funktioner
Funktioner
I Skapa funktioner varje gang en viss ”algoritm” ellerflerradig berakning anvands flera ganger
I MATLABs inbyggda funktioner ar skriva pa detta vis(skriv type funktionsnamn for att se)
Skript
I Definiera nagra variabler/parametrarI Anropa olika funktionerI Processa och visualisera resultaten fran funktioner
24/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Visualisering
Sag att vi vill plotta (visualisera) den matematiska funktioneny = sin(x) for 0 ≤ x ≤ 10:
m-fil plotSine.m
x = 0:0.1:10; % The x for which y should be computedy = sin(x);
figure; % Open a new figure ready for plottingplot(x,y) % Plot y as a function of xxlabel('x') % Give a name to the horizontal axisylabel('y = sin(x)') % Give a name to the vertical axistitle('My first plot') % Give a name to the whole figure
25/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Visualisering: Manga typer
Manga funktioner for att plotta data:
I 2D linjegrafer: plot, semilogx (horizontal log-scale)I 2D stapeldiagram: bar, histogramI 3D linjegrafer: plot3I 3D staplar eller nat: bar3, meshI 3D ytor: surf, sphere, ellipsoid
Anvand help for att lasa mer!
Anpassa plottar:
I Nastan allt kan skraddarsys.I Anvand ”Property Editor” i menyn ”View” for en figur.
26/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Kontrollstrukturer
Vissa ”beteenden” beror pa inparametrar:I Har ditt bankkonto tillrackligt med pengar?
Vissa kodsnuttar upprepas:I Behover du kora samma kodrader flera ganger?I Vet du i forvag hur manga ganger?
MATLAB har flera kontrollstrukturer:I if-satserI while-looparI for-loopar
Dessa liknar andra programmeringssprak.
27/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
if-satserGenerell syntax:
if villkor% kommandon om villkoret ar uppfyllt
else% kommandon om villkoret inte ar uppfyllt
end
Skriv villkor med logik:
I Anvander operatorer som: > >= == && || ∼= < <=
I Sag att savings ar en variabel med saldot pa dittbankkonto.
I Exempel: savings >= 10000 && savings <= 20000
28/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: if-satser
Example
Ett bankkonto ger 2% i ranta pa sparade pengar och debiterar14% i ranta pa krediter. Skriv en funktion som beraknar rantanfor ett viss belopp.
m-fil computeBankInterest.m
function interest = computeBankInterest(amount)% Computes annual interest for a given amount
if amount >= 0interest = 0.02*amount;
elseinterest = 0.14*amount;
end
end
29/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Skydda mot felIf-satser kan anvandas for att undvika felaktiga beteenden
I Exempel: computeBankInterest(amount) kan intehantera komplexa tal
I Detta kan kontrolleras och hanteras sa har:
if imag(amount) ˜= 0error('There is no imaginary money!');
end
I imag() ger den imaginara delen av enskalar/vektor/matris
I error() visar ett felmeddelandeI Textstrangar kan skriva som 'meddelande'
I Alternativ: disp() visar ett icke-felrelaterat meddelande
30/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
while-loopar
I Upprepa samma berakningar sa lange (while) ett villkor aruppfyllt
I Villkoret kontrolleras i borjan av varje loopI Var saker pa att villkoret till slut blir falskt – annars oandlig
loop!
I Generell syntax:while villkor% kommandon som ska upprepas
end
31/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: while-looparExample
Anta att du har lanat 1 miljon kr fran en bank. Banken debiterar0.25% i ranta per manad. Du amorterar 5000 kr per manad.Hur manga manader tar det att aterbetala hela lanet?
m-fil predictLoan.m
currentLoan = 1e6; % The initial loan is 1,000,000 krmonthlyPayment = 5000; % You pay 5000 kr each monthmontlyInterest = 0.0025; % The bank charges 0.25% per monthmonthNumber = 0; % Keep track of month number
while currentLoan >= 0currentLoan = currentLoan + currentLoan*montlyInterest; %Apply interest ratecurrentLoan = currentLoan - monthlyPayment; %Reduce loan by monthly paymentmonthNumber = monthNumber + 1;
end
% monthNumber will now contain the month when you have repaid your loan% Be sure that monthlyPayment > currentLoan*montlyInterest, otherwise it never stops!
32/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
for-loopar
I Vet hur manga gangar som kommandon ska upprepas?I Mer kompakt att anvanda for-loopar istallet for while
I Generell syntax:for var = vektor med varden
% kommandon som ska upprepasend
33/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Exempel: for-looparExample
Anta att du borjar spara 500 kr per manad nar ditt barn fods.Den manatliga rantan ar 0.17% (2% per ar). Hur mycketkommer barnet ha vid 18 ars alder?
m-fil predictSavings.m
currentSaving = 0; % Bank account is empty in advancemonthlySaving = 500; % You save 500 kr per monthmontlyInterest = 0.0017; % The bank interest is 0.17% per month
numberOfMonths = 12*18; % Compute number of months before turning 18
for index = 1:numberOfMonthscurrentSaving = currentSaving + currentSaving*montlyInterest; %Apply interest ratecurrentSaving = currentSaving + monthlySaving; % Add monthly saving
end
% currentSaving will now contain the savings at the age of 18
34/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Sammanfattning
I MATLAB ar anvandbart for manga typer av berakningarI Standardverktyg pa universitet och manga foretag – mer
an 1 miljon anvandareI Valj variabelnamn noggrant – skriv kommentarerI Anvand skript och funktioner, det kommer spara dig tidI Kontrollstrukturer:
I if-satser – gor olika saker baserat pa ett villkorI for-loopar – upprepa berakningar ett forbestamt antal
gangerI while loops – upprepa berakningar tills ett villkor inte ar
uppfyllt langreI Anvand hjalpsystemet for att utveckla dina kunskaper!!!
35/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS
Lycka till med kursen!
Ha kul med MATLAB!
Lar er genom att utforska!
36/36
Hakan JohanssonIntroduktionskurs i MATLAB (TSRT04)
COMMUNICATION SYSTEMSLINKOPING UNIVERSITY
MM
YS