Professional Documents
Culture Documents
Timo Mkel
SISLT:
1.
KYTTLIITTYM...........................................................................................................1
1.1
YLEIST ...........................................................................................................................1
1.2
TYPYT .......................................................................................................................1
1.2.1
Komentoikkuna........................................................................................................2
1.2.2
Tytila......................................................................................................................4
1.2.3
Komentohistoria ......................................................................................................4
1.2.4
Nykyinen hakemisto.................................................................................................5
1.3
OHJETOIMINTA .................................................................................................................5
1.4
HAKUPOLKU.....................................................................................................................6
1.5
EDITORI ............................................................................................................................7
1.6
YLEISI KOMENTOJA ........................................................................................................7
2.
SKALAARIT .........................................................................................................................8
2.1
2.2
2.3
3.
LASKUTOIMITUKSET.........................................................................................................9
YLEISI VAKIOITA ..........................................................................................................10
PERUSFUNKTIOT .............................................................................................................12
MATRIISIT .........................................................................................................................15
3.1
MATRIISIEN SYTT.......................................................................................................16
3.1.1
Satunnaismatriisit .................................................................................................18
3.2
VEKTORIEN SYTT .......................................................................................................20
3.3
OSAMATRIISIT JA LOHKOMATRIISIT ................................................................................21
3.4
MATRIISIOPERAATIOT ....................................................................................................24
3.5
TAULUKKO-OPERAATIOT................................................................................................26
3.5.1
Taulukkofunktiot....................................................................................................28
4.
MATLAB Osa 1
1. KYTTLIITTYM
1.1 Yleist
MATLAB on tekniseen laskentaan suunniteltu tehokas matematiikkaohjelma, jolla voi
suorittaa numeerista laskentaa
havainnollistaa kuvallisessa muodossa
tehd ohjelmia.
MATLABia ohjataan komennoilla, jotka kirjoitetaan komentoikkunan syttriveille. MATLABia
voidaan laajentaa toolboxeilla, jotka ovat tiettyihin erikoisaloihin keskittyvi ohjelmapaketteja.
MATLAB on numeerisen laskennan ohjelma, mutta siihen on siihen on saatavissa Symbolic
Math Toolbox, joka mahdollistaa symbolisen laskennan.
Keskeinen tietoalkio MATLABissa on matriisi. Nimi MATLAB tuleekin sanoista matrix laboratory.
1.2 Typyt
MATLABin oletustypydss on kolme ikkunaa, joista osassa on vlilehti. Nist trkein on
Command Window, jossa laskentakomennot annetaan.
Muut osat ovat
Workspace, tytilassa olevat muuttujat.
Command History, komentohistoria.
Current Directory, nykyinen hakemisto
MATLAB Osa 1
Typyt voi muuttaa. Ikkunoita voi sulkea ja kokoa muuttaa. Typydll olevan ikkunan saa
erilliseksi ikkunaksi (undock) ikkunan oikeassa ylreunassa olevalla nuolipainikkeella . Erilli. Valikostossa Desktop on typysen ikkunan saa takaisin typydlle (dock) painikkeella
tn liittyvi komentoja. Alkuperisasetuksiin palataan komennolla Desktop: Desktop Layout:
Default.
Nykyinen hakemisto nkyy typydll kohdassa
MATLAB Osa 1
Shift+Enterill; viimeinen rivi ptetn Enterill. Samalle riville voi kirjoittaa komentoja
erottamalla ne joko pilkulla tai puolipisteell. Jos komennon perss on puolipiste niin komennon tulos ei tule nytlle. Tt kannattaa kytt varsinkin suurissa matriiseissa.
Komennon tulos voidaan tallentaa muuttujaan sijoituskskyll, jonka operaattori on =. Jos sijoitusksky ei anneta, tallennetaan tulos muuttujaan ans.
>> 1+2
ans =
3
>> a=1/ans
a =
0.3333
>> 3*a
ans =
1
>> b=1-a;
>> b
b =
0.6667
Muuttujan nimen on alettava kirjaimella ja se voi sislt kirjaimia (ei kuitenkaan kksi),
numeroita ja alaviivoja. Nimen 63 ensimmist merkki otetaan huomioon. Isot ja pienet kirjaimet ovat eri kirjaimia.
Jos komento ei mahdu yhdelle riville se voidaan jatkaa seuraavalla riville kirjoittamalla ja
painamalla Enteri:
>> s=1+1/2+1/3+1/4+1/5+1/6+1/7+...
1/8+1/9+1/10+1/11+1/12
s =
3.1032
ans =
-1.9119
Aikaisempia komentoja
vasti:
Nppily
xy
home
end
esc
MATLAB Osa 1
Kirjoittamalla komennon tai muuttujan nimen alun ja painamalla tabulaattoria tapahtuu seuraavaa:
Jos tydentminen on yksiksitteinen MATLAB tydent komennon.
Jos tydentminen ei ole yksiksitteinen, saa luettelon vaihtoehdoista.
Ohjelman ajon voi keskeytt komennolla Ctrl+c tai Ctrl+Break. Ohjelman keskeytymist saa
yleens odottaa jonkin aikaa.
MATLABin kytt lopetetaan1
valikkokomennolla File: Exit MATLAB tai
komennnoilla quit tai exit.
1.2.2 Tytila
Tytilassa (Workspace) nkyvt kytss olevat muuttujat. Muuttujista nytetn niiden nimet,
arvot ja tyypit.
Tytilan muuttujia voi ksitell tytilan painikkeilla tai hiiren oikeanpuoleisella nppimell
aukeavaa putkahdusvalikkoa kytten. Kaksoisklikkaamalla muuttujaa kynnistyy taulukkoeditori, jolla voi tarkastella ja muuttaa arvoja. Muuttuja voidaan piirt kytten painiketta
1.2.3 Komentohistoria
Komentohistoria-ikkunassa (Command History) nytetn aikaisemmin annetut komennot. Komentohistorian yksittisi komentoja saa suoritukseen
kaksoisklikkaamalla komentoa
kytten putkahdusvalikkoa Evaluate Selection, joka aukeaa hiiren oikeanpuoleisella
nppimell
Useita komentoja saa suoritukseen valitsemalla Shift-nppin tai Ctrl-nppin painettuna hiiren
vasemmalla painikkeella komentoja ja
raahaamalla ne hiiren vasen painike painettuna komentoikkunaan. Raahattuja rivej voi
muokata komentoikkunassa. Komennot suoritetaan painamalla Enteri.
Erss kirjassa varoitetaan lopettamasta ohjelmaa MATLABin ikkunan oikean ylkulman lopetuspainikkeella,
koska se voi joissain harvinaisissa tapauksissa sotkea tietokoneen kyttjrjestelm.
MATLAB Osa 1
1.3 Ohjetoiminta
Ohjetoiminto kynnistyy painikkeella
MATLAB Osa 1
1.4 Hakupolku
MATLABin tiedosto-operaatiot kyttvt lhtkohtanaan nykyist hakemistoa ja hakupolkua.
Ajettavan ohjelman on oltava jommassakummassa nist.
Hakupolkuja voi muuttaa valikkokomennolla File: Set Path
MATLAB Osa 1
1.5 Editori
MATLABin tekstieditorin voi kynnist
komennolla edit (tai edit TiedostonNimi)
valikkokomennolla File: New: M-file tai File: Open
painikkeilla
.
Editori tuntee MATLABin syntaksin. Editorilla on ktev kirjoittaa pidempi komentojonoja tai
tehd ohjelmia. Siksi editori-ikkuna on aina hyv pit auki MATLABilla tyskenneltess.
Editorissa voi olla auki useita tiedostoja. Jos useampi tiedosto on auki, on editori-ikkunan vasemmassa alanurkassa on vlilehdet, josta voi klikkaamalla vaihtaa tiedostoa.
MATLAB Osa 1
Komento
who
Merkitys
Tulostaa tytilassa olevat muuttuja
whos
clear
clear a
clc
Tyhjent komentoikkunan
clf
close
close all
doc
Avaa ohjeikkunan
edit
dir
type a
Tulostaa tiedoston a
>> who
Your variables are:
a
ans b
>> whos
Name
Size
a
ans
b
1x1
1x1
1x1
Bytes
8
8
8
Class
double array
double array
double array
y = 1./tan(z);
2. SKALAARIT
MATLABin keskeinen tietoalkion on matriisi. Matriisit sytetn hakasulkuja kytten (ks. Matriisien sytt). MATLABissa skalaari eli luku on 11-matriisi: matriisi jossa on yksi rivi ja yksi
sarake. Se voidaan sytt ilman hakasulkuja.
MATLAB Osa 1
2.1 Laskutoimitukset
Skalaareilla laskenta tapahtuu normaaliin tapaan. Desimaaliluvuissa kytetn desimaalipistett.
Laskentaoperaattorit ovat normaalit:
Operaatio
Yhteenlasku
Operandi
Huomautus
Vhennyslasku
Kertolasku
Jakolasku
Potenssin korotus
>> 5023+49
ans =
5072
Mys puolipistett voidaan kytt erottimena. Tllin komennon tulos ei tule nytlle.
Muuttujiin voidaan tallentaa arvoja. Jos tulosta ei tallenneta muuttujaan, MATLAB tallentaa
tuloksen muuttujaan ans.
>> 5+6
ans =
11
>> 7*ans
ans =
77
>> x=-23
x =
-23
>> y=7*x
y =
-161
ESIMERKKI. Lasketaan suoran ympyrlierin tilavuus kaavalla V = r 2 h , miss r on pohjaympyrn sde ja h on ympyrlierin korkeus.
MATLAB Osa 1
10
Muuta muuttujien r ja h arvoja ja laske uusi tilavuus. Kyt komentojen selailuun nuolinppimi.
TEHTVI
1. Laske katkaistun ympyrkartion tilavuus kytten kaavaa V = h
a 2 + ab + b 2
, kun
3
Merkitys
Luku
exp(1)
Napierin luku e
i tai j
Imaginaariyksikk
eps
Inf
retn
NaN
realmax
realmin
intmax
intmin
true
Tosi
false
Eptosi
MATLAB Osa 1
11
>> pi,exp(1)
ans =
3.1416
ans =
2.7183
Imaginaariyksikt ovat i ja j.
>> i^2
ans =
-1
>> 1/(2+i)
ans =
0.4000 - 0.2000i
>> (4+5j)/(3+j)
ans =
1.7000 + 1.1000i
mutta
>> (1+10^-16)-1
ans =
0
Vakio eps ilmoittaa tietokoneen lukujen esitystarkkuuden. Se on luvun 1 ja seuraavaksi suuremman desimaaliluvun erotus.
>> eps
ans =
2.2204e-016
>> (1+eps)-1
ans =
2.2204e-016
>> (1+eps/2)-1
ans =
0
MATLAB Osa 1
12
>> 1/0
Warning: Divide by zero.
ans =
Inf
>> 1/Inf
ans =
0
On tiedettv, mill lukualueella tietokone toimii. Jos mennn tmn alueen ulkopuolelle, ei
MATLAB en toimi oikein.
>> realmax,realmin,intmax,intmin
ans =
1.7977e+308
ans =
2.2251e-308
ans =
2147483647
ans =
-2147483648
>> (realmax+1)-realmax
ans =
0
>> 2*realmax
ans =
Inf
>> 2*intmax-intmax
ans =
0
>> (intmin-1)-intmin
ans =
0
2.3 Perusfunktiot
MATLABissa on kytettviss tutut perusfunktiot. Huomaa joitain merkinteroja normaaliin
kytntn nhden.
MATLAB Osa 1
Funktio
sqrt(x)
Merkitys
nelijuuri
exp(x)
e-kantainen eksponenttifunktio
log(x), log10(x)
trigonometriset funktiot
arkusfunktiot
hyperboliset funktiot
areafunktiot
Tllin
muuttujalla deg kertominen muuntaa asteet radiaaneiksi
muuttujalla deg jakaminen muuntaa radiaanit asteiksi
>> sin(45*deg)
ans =
0.7071
>> cos(60*deg)
ans =
0.5000
>> atan(1)/deg
ans =
45
13
MATLAB Osa 1
Funktio
abs(x)
Merkitys
itseisarvo
sign(x)
etumerkki
antan2(y,x)
real(z), imag(z)
angle(z)
kompleksiluvun z vaihekulma
ESIMERKKEJ.
>> atan2(5,3)/deg
ans =
59.0362
>> angle(3+5i)/deg
ans =
59.0362
%Sama arvo!
>> abs(3+5i)
ans =
5.8310
z
z
>> z=3-7i;
>> sign(z)
ans =
0.3939 - 0.9191i
>> z/abs(z)
ans =
0.3939 - 0.9191i
14
MATLAB Osa 1
Funktio
round(x)
Merkitys
Pyristminen lhimpn kokonaislukuun
fix(x)
floor(x)
ceil(x)
15
ESIMERKKEJ.
>> round(-2.7),round(2.7)
ans =
-3
ans =
3
>> fix(-2.7),fix(2.7)
ans =
-2
ans =
2
>> floor(-2.7),floor(2.7)
ans =
-3
ans =
2
>> ceil(-2.7),ceil(2.7)
ans =
-2
ans =
3
TEHTVI
1. Laske lausekkeiden arvot:
33,2 + 44,3
2,3 4,2
3 e 2 , 05
sin(30)
sin (30)
3
(esit tulos asteissa!)
arccos
3. MATRIISIT
Matriisi on suorakulmion muotoinen lukutaulukko. Jos matriisissa on m rivi ja n saraketta, matriisin sanotaan olevan kertalukua mn. Puhutaan mys mn-matriisista. Erityisesti
Luvut eli skalaarit ovat 11-matriiseja.
Vaakavektorit ovat matriiseja, joissa on yksi rivi.
Pystyvektorit ovat matriiseja, joissa on yksi sarake.
Matriisin alkiot aij indeksoidaan siten, ett
ensimminen indeksi i ilmoittaa rivin
toinen indeksi j ilmoittaa sarakkeen.
Indeksointi alkaa luvusta 1.
MATLAB Osa 1
16
2
5
8
3
6
9
>> B=[-3,2,0;4,4,-2]
B =
-3
4
2
4
0
-2
-3
>> v=[1;-4;-6]
v =
1
-4
-6
Matriisin alkioita sytettess lausekkeissa ei saa olla ylimrisi vlilyntej, koska matriisin
alkiot voidaan erottaa toisistaan mys vlilynnill.
>> C=[2+exp(1) 2+3i]
A =
4.7183
% Ei ylimrisi vlilyntej
2.0000 + 3.0000i
Merkint [ ] tarkoittaa tyhj matriisia, jossa ei ole yhtn alkiota. MATLABissa voidaan mritell tyhj matriisi, jota voidaan tydent myhemmin.
>> C=[]
C =
[]
Matriisin alkioihin viitataan ilmoittamalla rivi ja sarake, jolla alkio sijaitsee. Seuraavassa on tulostettu matriisin A 2. rivin 1. alkio:
MATLAB Osa 1
17
>> A(2,1)
ans =
4
>> A(:,3)
ans =
3
6
9
Sisisesti matriisi on tallennettu pystyvektorina asettamalla sarakkeet perkkin. Matriisin alkioihin voidaan siis aina viitata mys yhdell indeksill. Komento A(:) tulostaa matriisin pystyvektorina.
>> A
A =
1
4
7
2
5
8
3
6
9
>> A(:)
ans =
1
4
7
2
5
8
3
6
9
>> A(6)
ans =
8
Matriisin kertaluku saadaan selville komennolla size. Komento antaa tulokseksi 12-matriisin,
jonka alkiot sisltvt matriisin kertaluvun.
>> size(B)
ans =
2
3
MATLAB Osa 1
18
Seuraava komento tallentaa matriisin rivien mrn muuttujaan m ja sarakkeiden mrn muuttujaan n.
>> [m,n]=size(B)
m =
2
n =
3
Toiminto
eye(m,n)
eye(size(A))
zeros(n)
zeros(m,n)
nn-yksikkmatriisi
ones(m,n)
ones(size(A))
matriisi, jonka alkiot ovat ykksi ja jolla on sama kertaluku kuin A:lla
ESIMERKKEJ.
>> eye(3)
ans =
1
0
0
0
1
0
0
0
1
15
15
15
15
15
15
TEHTVI.
1. Muodosta 157-matriisi, jonka kaikki alkiot ovat lukuja 3.
3.1.1 Satunnaismatriisit
Komento rand antaa satunnaisluvun, joka on tasaisesti jakautunut vlill [0, 1] . Satunnaismatriiseja, joiden alkiot ovat tasaisesti jakautuneet vlill [0, 1] , voi luoda komennoilla
MATLAB Osa 1
19
rand(n): nn-satunnaismatriisi.
rand(m,n): mn-satunnaismatriisi
rand(size(A)): satunnaismatriisi, jolla on sama kertaluku kuin matriisilla A
Vastaavasti komennolla randn saadaan satunnaislukuja, jotka ovat N(0,1)-normaalijakautuneita.
ESIMERKKEJ. Muodostetaan 35-matriisi, jonka alkiot ovat tasan jakautuneet vlill
[ 10,10] .
>> a=-10; b=10;
>> x=a+(b-a)*rand(3,5)
x =
9.0026
-5.3772
2.1369
-0.2804
7.8260
5.2419
-0.8706
-9.6299
6.4281
-1.1059
2.3086
5.8387
8.4363
4.7641
-6.4747
8
5
1
0
5
3
Muodostetaan satunnaisvektori, jonka alkiot ovat tasan jakautuneita kokonaislukuja vlill 5..12.
Koska komento 5+(13-5)*rand tuottaa vlill [5,13]] tasan jakautuneita satunnaislukuja, saadaan vlill 5..12 tasan jakautuneita kokonaislukuja komennolla floor(5+8*rand). Muodostetaan 7-vektori:
>> floor(5+8*rand(1,7))
ans =
7
6
5
10
12
MATLAB Osa 1
20
ans =
0.6648
0.8900
0.2391
0.2786
0.1722
0.5253
0.1304
0.2391
0.2786
0.1722
0.5253
0.1304
>> rand('state',s);
>> rand(1,7)
ans =
0.6648
0.8900
TEHTVI
linspace(a,b) on vektori, joka koostuu 100:sta vlill [a, b] tasavlisesti olevasta luvusta
a, c 2 , c3 , , c99 , b .
linspace(a,b,n) on vektori, joka koostuu n:sta vlill [a, b] tasavlisesti olevasta luvusta.
Pystyvektori saadaan transponoimalla vaakavektori: jos v on vaakavektori, niin v on pystyvektori1.
ESIMERKKEJ
>> v1 = 2:8
v1 =
1
MATLAB Osa 1
2
21
8
3.2000
4.2000
5.2000
6.2000
>> v3 = 1.2:0.5:4.1
v3 =
1.2000
1.7000
2.2000
2.7000
3.2000
3.7000
>> linspace(1.2,4.1,6)
ans =
1.2000
1.7800
2.3600
2.9400
3.5200
4.1000
7.2000
>> v = (1:3:10)'
v =
1
4
7
10
TEHTVI.
Toiminto
i:nnen rivin ja j:nnen sarakkeen alkio
A(i,:)
i:s rivi
A(:,j)
j:s sarake
A(i:k,:)
A(:,j:k)
A(i:k,j:p)
A(:)
A(j:k)
A([i1,i2,],:)
A(:,[j1,j2,])
A([i1,i2,],[j1,j2,]) Osamatriisi, joka koostuu riveist i1, i2, ja sarakkeista j1, j2,
MATLAB Osa 1
ESIMERKKEJ.
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
1
4
7
2
5
8
3
6
9
>> A(2:3,:)
ans =
4
7
5
8
6
9
>> A([3,2],1:2)
ans =
7
4
8
5
>> A(end-1,:)
ans =
4
5
Matriisista A poistetaan
i:s rivi komennolla A(i,:) = [ ]
j:s sarake komennolla A(:,j) = [ ]
>> A(2,:)=[]
A =
1
2
7
8
3
9
2
6
3
7
4
8
>> A(:,3:4)=eye(2)
A =
1
22
MATLAB Osa 1
5
23
Lohkomatriisi on matriisi, jonka alkiot ovat matriiseja. Alkioina olevien matriisien on oltava
kertaluvultaan yhteen sopivia. Nin muodostuu isompi matriisi, jonka alimatriiseja lohkot ovat.
Lohkomatriiseja muodostetaan samaan tapaan kuin tavallisia matriiseja.
>> B=[1 2;3 4]
B =
1
2
3
4
>> [B,zeros(2);eye(2),10*B]
ans =
1
2
0
0
3
4
0
0
1
0
10
20
0
1
30
40
0.1987
0.6038
>> B=ones(size(A))
B =
1
1
1
1
1
1
>> C=[A;B]
C =
0.8132
0.0099
1.0000
1.0000
0.1389
0.2028
1.0000
1.0000
0.1987
0.6038
1.0000
1.0000
>> D=[A,B]
D =
0.8132
0.0099
0.1389
0.2028
0.1987
0.6038
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
Tyhjn matriisin [ ] alle tai pern voidaan asettaa millainen matriisi tahansa:
>> [[],D]
ans =
0.8132
0.0099
0.1389
0.2028
0.1987
0.6038
1.0000
1.0000
1.0000
1.0000
TEHTVI.
1. Muodosta lohkomatriiseja kytten kuvan kaltainen matriisi
1.0000
1.0000
MATLAB Osa 1
1
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
5
5
5
0
0
1
5
5
5
0
1
0
24
5
5
5
1
0
3.4 Matriisioperaatiot
Seuraavassa esitelln matriisilaskennasta tutut matriisilaskennan perusoperaatiot yhteenlasku ja
kertolasku.
Esimerkeiss kytetn seuraavia matriiseja:
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1
2
3
4
5
6
7
8
9
>> B = [3 -2 1; 5 3 -2; 4 1 0]
B =
3
-2
1
5
3
-2
4
1
0
Matriisien yhteenlasku ja vhennyslasku on mritelty, jos matriiseilla on sama kertaluku. Yhteenlaskussa vastinalkiot lasketaan yhteen; vhennyslaskussa vastinalkiot vhennetn.
>> A+B
ans =
4
9
11
0
8
9
4
4
9
12
15
18
13
16
19
Kaksi matriisia voidaan kertoa keskenn, jos kertojassa on yht monta saraketta kuin kerrottavassa rivej. Tulon AB i:nnen rivin ja j:nnen sarakkeen alkio on A:n i:nnen rivin ja B:n j:nnen
sarakkeen vastinalkioiden tulojen summa.
Tulossa AB on
yht monta rivi kuin matriisissa A
yht monta saraketta kuin matriisissa B
Kertolaskun merkkin on *.
MATLAB Osa 1
>> A*B
ans =
25
61
97
7
13
19
25
-3
-6
-9
-30
-60
-90
itselln seuraavasti: A = AA
k
>> A^4
ans =
7560
17118
26676
9288
21033
32778
11016
24948
38880
>> A*A*A*A
ans =
7560
17118
26676
9288
21033
32778
11016
24948
38880
5
1
-2
5
6
7
8
9
10
11
12
Itse asiassa A ottaa matriisin alkioista mys kompleksikonjugaatit. Pelkk transpoosi muodostetaan komennolla A.:
MATLAB Osa 1
26
>> A=[-i,2+5i;7+2i,4]
A =
0 - 1.0000i
2.0000 + 5.0000i
7.0000 + 2.0000i
4.0000
>> A'
ans =
0 + 1.0000i
2.0000 - 5.0000i
7.0000 - 2.0000i
4.0000
>> A.'
ans =
0 - 1.0000i
2.0000 + 5.0000i
7.0000 + 2.0000i
4.0000
3.5 Taulukko-operaatiot
Aritmeettisia operaatioita, jotka suoritetaan kahden matriisin vastinalkioiden kesken sanotaan
taulukko-operaatioiksi tai alkioittaisiksi operaatioiksi. Ne vastaavat taulukkolaskennassa
kytettyj operaatioita. Taulukko-operaatioissa matriisien kertalukujen on oltava samoja. Taulukko-operaatio saadaan laittamalla piste operaattorin eteen.
Esimerkeiss kytetn seuraavia matriiseja:
>> A = [1 2; 3 4], B = [5 6; 2 -3]
A =
1
2
3
4
B =
5
2
6
-3
12
-12
0.3333
-1.3333
>> A.\B
ans =
5.0000
0.6667
3.0000
-0.7500
Alkioittaisen jakolaskun erikoistapaus on skalaarin jakaminen matriisilla: tuloksena on jakajamatriisin kokoinen matriisi, joka saadaan jakamalla skalaari alkioittain jakajamatriisilla.
MATLAB Osa 1
>> 4./A
ans =
4.0000
1.3333
27
2.0000
1.0000
Alkioittaisessa potenssiin korotuksessa korotetaan kantamatriisi alkioittain eksponenttimatriisin osoittamaan potenssiin. Operaatiota merkitn .^
>> A.^B
ans =
1.0000
9.0000
64.0000
0.0156
ESIMERKKI. Olkoon
>> x=1:5
x =
1
Lasketaan funktion
sin x
arvo vektorin x alkioilla. Huomaa taulukko-operaatioiden kytt!
1+ x2
>> sin(x)./(1+x.^2)
ans =
0.4207
0.1819
0.0141
-0.0445
-0.0369
4
16
>> 2.^A
ans =
2
8
4
16
Matriisi A voidaan
peilata vaakasuunnassa komennolla fliplr(A)
peilata pystysuunnassa komennolla flipud(A)
kiert positiiviseen suunta 90 komennolla rot90(A)
>> A=[1:4;5:8;9:12]
A =
1
2
3
5
6
7
4
8
MATLAB Osa 1
9
10
11
12
>> fliplr(A)
ans =
4
3
8
7
12
11
2
6
10
1
5
9
>> flipud(A)
ans =
9
10
5
6
1
2
11
7
3
12
8
4
>> rot90(A)
ans =
4
8
3
7
2
6
1
5
12
11
10
9
28
TEHTVI.
1. Muodosta vektori x, joka koostuu vlill 110 olevista luvuista 0.5:n vlein. Luvut ovat siis
1; 1,5; 2; 2,5; , 10. Tee tm yhdell komennolla. Laske seuraavien funktioiden arvot vektorin x alkioilla.
5x 3
1
x sin x
b)
c)
d)
x2
x
2x 2 + ex
2. Komento fliplr knt matriisin sarakevektorit vastakkaiseen jrjestykseen. Toteuta komento lohkomatriisikomentoja ja avainsanaa end kytten. Testaa tulos.
3. Komento flipud knt matriisin rivivektorit vastakkaiseen jrjestykseen. Toteuta komento
lohkomatriisikomentoja ja avainsanaa end kytten. Testaa tulos.
a)
3.5.1 Taulukkofunktiot
Taulukko-operaatioina voidaan pit luvussa 2.3 esiteltyj matematiikan perusfunktioita, koska ne operoivat matriisiin alkioittain.
>> sqrt(A)
ans =
1.0000
1.7321
1.4142
2.0000
>> exp(A)
ans =
2.7183
20.0855
7.3891
54.5982
>> sin([pi,0;pi/2,-pi/4])
ans =
0.0000
0
1.0000
-0.7071
MATLAB Osa 1
29
Funktio
sum(x)
Toiminto
vektorin x alkioiden summa
prod(x)
max(x), min(x)
mean(x)
std(x)
cumsum(x)
sort(x)
-7
-9
-4
>> sum(x)
ans =
-15
>> mean(x)
ans =
-1.5000
>> cumsum(x)
ans =
-2
-11
-5
-3
-2
-2
-11
-15
>> sort(x)
ans =
-9
-9
-7
-4
-2
>> A=floor(19*rand(3,4)-9)
A =
9
8
6
6
-1
-4
7
7
9
7
-9
-3
>> cumsum(A)
ans =
9
8
8
4
17
11
6
13
4
>> cumsum(A(:))'
6
13
10
MATLAB Osa 1
ans =
9
17
25
>> max(A)
ans =
9
>> max(A(:))
ans =
9
21
28
34
30
41
32
38
45
42
Jos vektorin alkioissa on NaN, niin komennon sum tulos on NaN. Tllin on kytettv komentoa1 nansum, joka jtt arvot NaN huomioimatta. Vastaavasti on komennot nanmax, nanmin,
nanmean ja nanstd.
>> A=[1:4;2 NaN,0, 4;-5,3,NaN, 1]
A =
1
2
3
4
2
NaN
0
4
-5
3
NaN
1
>> sum(A)
ans =
-2
NaN
NaN
>> nansum(A)
ans =
-2
5
Komento
mod(x, y)
muodostaa reaalilukujen x ja y jakolaskun x/y jakojnnksen. Tarkemmin
mod( x, y ) = x floor ( x / y ) y
Tulos on samanmerkkinen kuin y. Komennossa x ja y voivat olla mys samaa kertalukua olevia
matriiseja, jolloin jakojnns muodostetaan alkioittain.
ESIMERKKEJ.
>> a=[12,-12,12,-12]
a =
12
-12
12
-12
MATLAB Osa 1
>> b=[5,5,-5,-5]
b =
5
5
-5
-5
>> mod(a,b)
ans =
2
3
-2
-3
31
1
7
13
19
25
8
14
20
21
2
15
16
22
3
9
>> sum(A)
%Sarakkeiden summat
ans =
65
65
65
65
65
>> sum(A')
ans =
65
65
%Rivien summat
>> sum(diag(A))
ans =
65
65
65
>> sum(diag(fliplr(A)))
ans =
65
TEHTVI
65
MATLAB Osa 1
32
4. LUKUJEN ESITYSMUODOT
MATLAB suorittaa laskut pasiassa kaksoistarkkuuden liukuluvuilla jolloin laskentatarkkuus
on noin 16 numeroa. Lukujen esitysmuoto ei vaikuta laskennan tarkkuuteen.
Luvut esitetn oletusarvoisesti kokonaislukuina tai 4-desimaalisina desimaalilukuina. Oletusarvo palautetaan komennolla
format.
Jos matriisin kaikki alkiot ovat kokonaislukuja, niin ne esitetn kokonaislukuina. Jos ainakin
yksi alkio on desimaaliluku, niin kaikki alkiot esitetn desimaalilukuina.
Komennolla
format tyyppi,
muutetaan lukujen esitysmuoto muotoon tyyppi. Seuraava taulukko sislt suuntaa-antavan
esitysmuotojen kuvauksen
Tyyppi
short
Kuvaus
5-numeroinen esitysmuoto, oletusarvo
short e
5-numeroinen eksponenttimuoto
short g
long
long e
15-numeroinen eksponentti
long g
rat
loose
compact
bank
hex
Heksadesimaaliluvut.
ESIMERKKEJ.
>> format short
>> pi
ans =
3.1416
MATLAB Osa 1
>> format short e
>> pi
ans =
3.1416e+000
>> format short g
>> pi
ans =
3.1416
>> format long
>> pi
ans =
3.14159265358979
>> format long e
>> pi
ans =
3.141592653589793e+000
>> format long g
>> pi
ans =
3.14159265358979
>> format rat
>> pi
ans =
355/113
>> format bank
>> pi
ans =
3.14
>> format +
>> [2 -3 4; -1 0 4]
ans =
+-+
- +
>> format
>> pi
ans =
3.1416
%Palautetaan lhttilanne
TEHTVI.
1. Kuinka paljon luvun rationaaliarvo eroaa luvun desimaaliarvosta?
33