Afsnit ML.1: MATLAB som primitiv lommeregner
Her følger nogle eksempler på, hvordan MATLAB kan bruges som lommeregner.
>> 2*3
ans= 6
>> 2+3
ans= 5
>> 2-3
ans= -1
>> 6/2
ans= 3
>> 3^2
ans= 9
>> 2+3*2
ans= 8
>> (2+3)*2
ans= 10
>> log(exp(10))) # log er den naturlige logaritme
ans= 10
>> sqrt(4))
ans= 2
ML.1.1 Variable i MATLAB
I MATLAB indføres variable ved at skrive det navn, man ønsker, og
tildele variablen en værdi gennem et lighedstegn. Så selvom man umiddelbart
læser "x=2" som "x er lig med 2", bør man retteligt læse dette som
"x tildeles værdien 2".
>> x=2
x = 2
>> y=3; % semicolon betyder at MATLAB ikke skrier et resultat
>> z=x*y;
>> z
z = 6
>> 3*z
ans= 18
Bemærk i eksemplerne ovenfor forskellen mellem at skrive, eller ikke skrive,
et semikolon efter MATLAB-ordren: semikolon undertrykker udskrift af resultat.
ML.1.2 Vektorer i MATLAB
En af styrkerne ved et program som MATLAB er,
at man kan samle en række tal
i en vektor og derefter lave beregninger, der involverer hele
vektoren ved simple ordrer. En vektor af længde
består af
tal med indeks fra 1 til
Hvis MATLAB indeholder en vektor
kan man få fat i for eksempel det tredje element ved at skrive
En vektor kan dannes ved at skrive elementerne inden for de kantede
parenteser i kommandoen
[]
med komma imellem.
>> v=[3,7,2,-1,2,5];
>> v
v = 3 7 2 -1 2 5
>> v(3) % udtrække det tredje element
ans = 2
>> v(end) % sidste element i v
ans = 5
>> v([2,4]) % udtrække flere elementer
ans = 7 -1
>> v(1:3) # udtrækker elementerne 1 til 3
ans= 3 7 2
>> 2*v
ans = 6 14 4 -2 4 10
>> 2+v
ans = 5 9 4 1 4 7
>> min(v)
ans = -1
>> max(v)
ans = 7
>> [m,I]=min(v)
m = -1 % m indeholder den mindste værdi i v
I = 4 % I angiver hvor minimum findes
>> sum(v) % sum af alle elementerne
ans = 18
>> cumsum(v) % løbende sum af de første i elementer
ans = 3 10 12 11 13 18
>> exp(v)
ans = 1.0e+03 *
0.0201 1.0966 0.0074 0.0004 0.0074 0.1484
% sætte tal og vektorer sammen i ny vektor
>> [sum(v(1:2)),v(3:5),v(6)]
ans = 10 2 -1 2 5
Her følger en række specielle vektorer, der kan angives uden at skrive
alle tallene i vektoren.
>> w=[3:7];
>> w
w = 3 4 5 6 7
>> w(2:4)
ans = 4 5 6
>> w(3:end)
ans = 5 6 7
>> linspace(3,7,9) % 9 ækvidistante værdier mellem 3 og 7
ans = 3.0000 3.5000 4.0000 4.5000 5.0000 5.5000 6.0000 6.5000 7.0000
>> repelem(1,5)) # tallet 1 gentages 5 gange
ans= 1 1 1 1 1
>> repelem([1,2],[3,4]) # 1 gentages 3 gange og 2 gentages 4 gange
ans = 1 1 1 2 2 2 2
>> zeros(1,5)
ans = 0 0 0 0 0
>> ones(1,5)
ans = 1 1 1 1 1
MATLAB opfatter en vektor af længde
som
en
matrix. Man kan lave en
rækkevektor
om til
en
søjlevektor ved at skrive
v'
(transponering).
Beregninger med vektorer opfatter MATLAB som matrixberegninger.
Ofte vil vi imidlertid lave elementvis
beregninger på en vektor.
Dette kan opnås ved at sætte punktum foran en operator.
>> x=[2,-1,3,8,4];
>> y=[4,1,0,3,3];
>> x+y
ans = 6 0 3 11 7
>> x-y
ans = -2 -2 3 5 1
>> x.*y
an = 8 -1 0 24 12
>> y./x
ans = 2.0000 -1.0000 0 0.3750 0.7500
>> x.^2
ans = 4 1 9 64 16
ML.1.3 Nul er ikke altid nul
Enhver elektronisk regnemaskine har en vis regnenøjagtighed.
Når vi beregner
-værdier, vil vi ofte gøre dette som
, hvor
selv er en sandsynlighed. Hvis
er meget tæt på
1, kan beregningen af
give værdien nul. I nogle tilfælde kan
beregnes direkte, hvorved at man ikke får nul, men en mere
præcis lille værdi. Situationen er vist nedenfor med en sandsynlighed
fra en
-fordeling med 1 frihedsgrad. Sandsynligheden for at
ligge til venstre for et punkt beregnes med
chi2cdf,
hvorimod sandsynligheden for at
ligge til højre for punktet beregnes med
chi2cdf(..,'upper').
>> pval1=1-chi2cdf(80,1);
>> pval2=chi2cdf(80,1,'upper');
>> [pval1,pval2]
ans = 1.0e-18 * 0 0.3744
ForegåendeNæste