Afsnit 1.7: Introduktion til MATLAB

MATLAB-logo fra https://commons.wikimedia.org/wiki/File:MatlabLogo.png
I Introducerende statistik og dataanlyse med MATLAB skal nogle af jer bruge programpakken MATLAB til at lave de numeriske beregninger. Se indledningen til kapitel ML med hensyn til installation af MATLAB.

MATLAB som simpel lommeregner

Kør nedenstående kommando (på jeres egen computer), og prøv egne små regnestykker ved at ændre på koden.
Tal kan placeres i variable som efterfølgende kan indgå i beregninger.
Prøv at tilføje x=x+3; efter første linje i ovenstående kodevindue. Hvad tror du, der sker?

Vektorer i MATLAB

I kodevinduet nedenfor dannes en vektor ved brug af kommandoen , hvor elementerne i vektoren skrives inden for de kantede parenteser og adskildt af komma. MATLAB er matrix-baseret, hvorfor operationer med vektorer umiddelbart opfattes som matrixmanipulationer. Elementvise beregninger fås ved at tilføje et punktum før den matematiske operation. Funktionen sum anvendt på en vektor giver summen af alle elementerne i vektoren. Prøv, at gætte på resultatet af nedenstående beregning inden du udfører beregningen. Prøv selv andre beregninger med vektorer som for eksempel 3*x og x./y.
Et element, for eksempel det andet element, i en vektor kan findes ved at skrive x(2). Vektoren, der består af tallene kan dannes med kommandoen [3:9]. Vektoren, der består af tre 1-taller efterfulgt af fire 2-taller, kan dannes med kommandoen repelem([1,2],[3,4]), og en vektor hvor gentages 3 gange kan dannes med repmat([1,2],1,3). Prøv igen, at gætte på resultatet af nedenstående beregning inden du udfører denne.

Logiske udtryk i MATLAB

Gæt på, hvad du tror resultatet af nedenstående beregning bliver.
Prøv i stedet 3>2. Lad x=[1:4], og udregn x>2, x==2 og x!=2. Prøv også at udregne henholdsvis sum(x>2) og sum(x(x>2)).

Forklaring

I MATLAB resulterer et logisk udtryk i enten true eller false skrevet som 1 eller 0. Når en true/false variabel indgår som indeks i en vektor, vil MATLAB lave en reduceret vektor, der kun indeholder indgangene med værdien "true".

Illustration af sandsynlighed i MATLAB

Som det fremgår af definitionen af -værdi i afsnit 1.1, er dette begreb baseret på sandsynligheder. Her vil jeg lige minde jer om en måde at forstå sandsynligheder på. Når jeg kaster en (ærlig) mønt mange gange, forventer jeg, at frekvensen af krone vil være tæt på Når man siger, at sandsynligheden for krone er betyder dette, at hvis vi kaster mønten flere og flere gange, så vil frekvensen af krone komme tættere og tættere på Dette kan vi illustrere i MATLAB.
Prøv at køre koden. Hvad ser du? Prøv at ændre på sandsynlighederne i vektoren i kaldet af randsample.
Funktionen randsample kan bruges til på simpel vis at simulere et kast med en terning. Kaldet randsample([1:4],100,true) simulerer 100 kast med en firesidet terning. Resultatet er 100 tilfældige tal blandt 1,2,3,4. Generelt bruger jeg ordet simulation, når jeg beder MATLAB om at generere tilfældige udfald fra en fordeling.

Figurer i MATLAB

En af styrkerne ved MATLAB er, at vi nemt kan lave figurer af en god kvalitet. Nedenfor kan I prøve en plotkommando for at se nogle af mulighederne (brugen af plot er beskrevet i afsnit ML.2).
Når I har kørt ovenstående kommando, prøv da, ved at kigge på figuren, at svare på følgende spørgsmål.
  1. Kommandoen [1:7] laver en vektor med tal: hvilken?
  2. Kommandoen repelem(2,7) laver en vektor med tal: hvilken?
  3. Angiv farverne der fremkommer ved tilføjelsen 'r'.
  4. Angiv punktsymbolerne der fremkommer ved tilføjelsen 's'.

Svar: Figurindstillinger

  1. Kommandoen [1:7] laver vektoren 1,2,3,4,5,6,7.
  2. Kommandoen repelem(2,7) laver vektoren 2,2,2,2,2,2,2.
  3. Rækkefølge af farver og punktsymboler: se afsnit ML.2.

Indlæse data i MATLAB

På kursushjemmesiden ligger en zip-fil med en række datasæt. I skal hente denne fil og placere filerne med datasæt i en mappe på jeres egen computer. Når et datasæt ønskes indlæst, skal man enten angive stien til den mappe på computeren, hvor datasættet ligger, eller også skal working directory i MATLAB pege på den mappe, hvor datasættet ligger. Man kan ændre på working directory i MATLAB ved at bruge navigationspilene øverst i Current Folder vinduet.
For at indlæse et datasæt skal I i dette kursus bruge to forskellige kommandoer. For en fil med en række tal uden struktur bruges kommandoen load("filnavn"). I dette tilfælde vil "filnavn" have endelsen ".txt", og hver linje indeholder kun et enkelt tal. For strukturerede data skal I indlæse med kommandoen readtable("filnavn"). Det forudsættes her, at filen indeholder data organiseret i søjler. Første række i filen indeholder søjleoverskrifter. Hver række svarer til et observationsnummer, og indgangene i rækken giver værdierne svarende til de forskellige søjler for dette observationsnummer. Dataværdierne er adskilt af komma. Disse datafiler vil altid have endelsen ".csv". Hvis data er indlæst i stukturen mydata og en af søjlerne har navnet soejlenavn kan man udtrække denne søjle som mydata.soejlenavn. Afsnit ML.3 indeholder yderligere omtale af readtable.
I kodevinduet nedenfor vises, hvordan filen Ind.csv indlæses. Når I kører koden på jeres egen computer, skal filen være til rådighed i working directory. Data, der indlæses, giver information om køn og alder for 5 personer.
  1. Prøv at ændre hold til hold(:,1) begge steder i koden efter indlæsningen. Prøv dernæst at ændre til hold.Koen begge steder. Kan du forklare forskellen?
  2. Prøv dernæst at ændre hold til hold.Alder(hold.Koen=="Pige"). Kan du forklare, hvad der skrives ud?

Svar: Udtrække data

  1. Data er indlæst i hold, som er organiseret i søjler. Den første søjle kan enten udtrækkes som hold(:,1) eller som hold.Koen, idet Koen er søjleoverskriften. I det første tilfælde er resultatet stadig en søjle i en datastruktur, hvorimod i det andet tilfælde er resultatet en (søjle-)vektor.
  2. Kommandoen hold.Alder giver hele den sidste søjle i hold. Når der indsættes en sandhedsvektor på indeksplads, får vi udvalgt de elementer, hvor sandhedsvektoren er sand.

Egne funktioner i MATLAB

Nogle få gange i dette kursus vil jeg bede jer om at lave nogle beregninger, der ikke laves nemt med standardfunktioner i MATLAB. Til dette har jeg lavet nogle nye funktioner, der alle er defineret i filer med endelsen ".m", og disse findes på kursushjemmesiden (i zip-filen sammen med datasæt). Filerne skal placeres i jeres working directory. Der er følgende funktioner:

ForegåendeNæste