M´ ern¨ oki informatika korszer˝ u fejleszt˝ o eszk¨ ozei
MATLAB alapok
Sergy´an Szabolcs
sergyan.szabolcs@nik.uni-obuda.hu
Obudai Egyetem´ Neumann J´anos Informatikai Kar
2012. febru´ar 17.
Aj´ anlott irodalom
K¨onyvek
R.C. Gonzalez, R.E. Woods, S.L. Eddins: Digital Image Processing Using MATLAB.Pearson Prentice Hall, 2004
T. Svoboda, J. Kybic, V. Hlavac: Image Processing, Analysis, and Machine Vision – A MATLAB Companion. Thomson, 2008 Honlapok
Mathworks honlap: www.mathworks.com
DIPUM k¨onyvh¨oz kapcsol´odva: www.imageprocessingplace.com K¨ovesi P´eter honlapja:
www.csse.uwa.edu.au/ pk/Research/MatlabFns/
Saj´at honlap: nik.uni-obuda.hu/sergyan
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 2 / 74
MATLAB
MATLAB =MATrix LABoratory Kezdetben matematikai szoftver volt Ma m´ar ´altal´anos m´ern¨oki szoftvercsomag
Az alapcsomaghoz ´un. toolboxok(f¨uggv´enygy˝ujtem´enyek) kapcsol´odnak
Image Processing Toolbox Image Aquisition Toolbox Signal Processing Toolbox Neural Network Toolbox Fuzzy Logic Toolbox Wavelet Toolbox
Folytonos ´es diszkr´et szimul´aci´ok is fejleszthet˝ok: Simulink
MATLAB k¨ ornyezet
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 4 / 74
MATLAB k¨ ornyezet
Parancs ablak
Ide ´ırhatunk parancsokat
Itt jelennek meg a m˝uveletek eredm´enyei
MATLAB k¨ ornyezet
Workspace
A parancsablakban kiadott utas´ıt´asok eredm´enyek´ent l´etrej¨ov˝o v´altoz´ok list´aja tal´alhat´o itt
Ha egy v´altoz´ora dupl´an kattintunk, akkor az Array Editor-ban l´athatjuk az ´ert´ekeit
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 6 / 74
MATLAB k¨ ornyezet
Current Directory
Az aktu´alis k¨onyvt´arban tal´alhat´o f´ajlok nyihat´ok meg, az itt l´ev˝o programok futtathat´ok el´er´esi ´ut megad´asa n´elk¨ul.
Ha egy k¨onyvt´ar a Path-ban van, akkor annak f´ajljai is el´erhet˝ok.
Path m´odos´ıt´asa: File / Set Path
MATLAB k¨ ornyezet
Command History
A legut´obbi parancsok list´aja l´athat´o itt B´armely kor´abbi parancs ´ath´uzhat´o a parancsablakba ´es ´ujra v´egrehajthat´o
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 8 / 74
MATLAB k¨ ornyezet
Editor
Programok ´ır´asa szolg´al´o ter¨ulet
Digit´ alis k´ ep ´ abr´ azol´ asa
Egy (sz¨urke´arnyalatos) k´epet egy k´etv´altoz´os f(x,y)
f¨uggv´enyk´ent is felfoghatjuk, aholx ´esy a t´erbeli koordin´at´ak, a f¨uggv´eny
´
ert´eke pedig megadja az adott helyen a k´ep intenzit´as´at.
Ha x,y ´es az f intenzit´as ´ert´ekek is v´eges elem˝u halmazb´ol ker¨ulnek ki, akkor a k´epet digit´alis k´epnek nevezz¨uk.
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 10 / 74
Koordin´ ata konvenci´ ok
Forr´as: DIPUM
K´ epek mint m´ atrixok
Egy digit´alis k´epet m´atrixk´ent tudunk ´abr´azolni:
f=
f(1,1) f(1,2) · · · f(1,N) f(2,1) f(2,2) · · · f(2,N)
... ... . .. ... f(M,1) f(M,2) · · · f(M,N)
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 12 / 74
K´ epek beolvas´ asa
imread(’filename’)
N´eh´any p´elda:
f=imread(’chestxray.jpg’);
f=imread(’D:\myimages\chestxray.jpg’);
f=imread(’.\myimages\chestxray.jpg’);
T´ amogatott k´ epform´ atumok
Form´atum Le´ır´as Kiterjeszt´es
neve
TIFF Tagged Image File Format .tif,.tiff
JPEG Joint Photographic Experts Group
.jpg,.jpeg
GIF Graphics Interchange Format .gif
BMP Windows Bitmap .bmp
PNG Portable Network Graphics .png
XWD X Window Dump .xwd
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 14 / 74
A size f¨ uggv´ eny
size(imagematrix)
>> size(f) ans =
494 600
>> [M,N]=size(f);
>> whos f
Name Size Bytes Class
f 494x600 296400 uint8 array
Grand total is 296400 elements using 296400 bytes
K´ epek megjelen´ıt´ ese
imshow(f,...)
imshow(f) – megjelen´ıti a k´epet mindenf´ele v´altoztat´as n´elk¨ul imshow(f, [low,high]) – a low´ert´ekn´el kisebb intenzit´as´u pixeleket feketek´ent, a high´ert´ekn´el nagyobb intenzit´as´u pixeleket feh´erk´ent jelen´ıti meg, a k´et ´ert´ek k¨oz¨otti intenzit´asokat pedig
´
atsk´al´azza
imshow(f, [])– hasonl´oan m˝uk¨odik az el˝oz˝oh¨oz, azzal a
m´odos´ıt´assal, hogylow´ert´eke az intenzit´asok minimuma,high pedig az intenzit´asok maximuma
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 16 / 74
K´ epek megjelen´ıt´ ese
Egy alacsony intenzit´as´u pixeleket tartalmaz´o k´ep megjelen´ıt´ese imshow(f), illetveimshow(f, [])paranccsal
Forr´as: DIPUM
M´ as megjelen´ıt´ ese m´ od
>> boy = imread(’Ondra sampling.jpg’);
>> image(boy)
>> axis image
>> title(’Input color image of a boy’)
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 18 / 74
M´ as megjelen´ıt´ ese m´ od
>> whos boy
Name Size Bytes Class Attributes
boy 808x1010x3 2448240 uint8
>> %extract individual color components
>> boyR = boy(:,:,1); %image with the red channel content
>> boyG = boy(:,:,2); %image with the green channel content
>> boyB = boy(:,:,3); %image with the blue channel content
>> figure %create a new MATLAB figure
>> %draw four images into the figure
>> subplot(2,2,1), subimage(boy), axis off, title(’boy - color image’)
>> subplot(2,2,2), subimage(boyR), axis off, title(’boyR - red channel’)
>> subplot(2,2,3), subimage(boyG), axis off, title(’boyG - green channel’)
>> subplot(2,2,4), subimage(boyB), axis off, title(’boyB - blue channel’)
M´ as megjelen´ıt´ esi m´ od
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 20 / 74
Konverzi´ o ´ es rajzol´ as a k´ epre
>> boyGray = rgb2gray(boy); % convert the color image into a gray-level one
>> figure % create a new MATLAB figure
>> image(boyGray) % display the grayscale image
>> colormap(gray(256)) % use the appropriate color map
>> axis off % switch off the axes with scales
>> % create a line segment between pixels (460,140) and (872,457),
>> % values given in (row,column) coordinates
>> r1 = 460; c1 = 140; r2 = 872; c2 = 457;
>> %draw the line to the picture
>> line( [r1, r2], [c1, c2], ’Color’, ’r’, ’LineWidth’, 3)
Konverzi´ o ´ es rajzol´ as a k´ epre
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 22 / 74
Intenzit´ asok egy adott szakasz ment´ en
>> %create a new MATLAB figure
>> figure
>> %calculate and display the intensity profile
>> %along the line segment created earlier
>> improfile( boyGray, [r1, r2], [c1, c2] )
>> ylabel(’Pixel value’)
>> title(’Intensity profile along the line segment’)
Intenzit´ asok egy adott szakasz ment´ en
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 24 / 74
K´ epek ment´ ese
imwrite(f, ’filename’)
imwrite(f, ’patient10 run1’, ’tif’) imwrite(f, ’patient10 run1.tif’)
imwrite(f, ’filename.jpg’, ’quality’, q)
Min´el kisebb q´ert´eke, ann´al nagyobb a JPEG t¨om¨or´ıt´es m´ert´eke.
K´ epek ment´ ese
q= 100 q = 50 q = 25
q= 15 q= 5 q = 0
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 26 / 74
R´ eszletes inform´ aci´ ok a k´ epekr˝ ol
imfinfo filename
>> imfinfo bubbles25.jpg ans =
Filename: ’bubbles25.jpg’
FileModDate: ’02-Feb-2005 09:34:50’
FileSize: 13354 Format: ’jpg’
FormatVersion: ’’
Width: 720 Height: 688 BitDepth: 8
ColorType: ’grayscale’
FormatSignature: ’’
NumberOfSamples: 1
CodingMethod: ’Huffman’
R´ eszletes inform´ aci´ ok a k´ epekr˝ ol
>> K = imfinfo(’bubbles25.jpg’);
>> image bytes = K.Width * K.Height * K.BitDepth / 8;
>> compressed bytes = K.FileSize;
>> compression ratio = image bytes / compressed bytes compression ratio =
37.0945
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 28 / 74
A MATLAB adat t´ıpusai
N´ev Le´ır´as
double Dupla pontoss´ag´u lebeg˝opontos sz´am−10308´es 10308k¨oz¨otti
´ert´ekekkel (8 b´ajton ´abr´azolva)
uint8 El˝ojel n´elk¨uli 8 bites eg´eszek a [0,255] intervallumban uint16 El˝ojel n´elk¨uli 16 bites eg´eszek a [0,65535] intervallumban uint32 El˝ojel n´elk¨uli 32 bites eg´eszek a [0,4294967295] intervallum-
ban
int8 El˝ojeles 8 bites eg´eszek a [-128,127] intervallumban int16 El˝ojeles 16 bites eg´eszek a [-32768,32767] intervallumban int32 El˝ojeles 32 bites eg´eszek a [-2147483648,2147483647] inter-
vallumban
single Egyszeres pontoss´ag´u lebeg˝opontos sz´am −1038 ´es 1038 k¨oz¨otti ´ert´ekekkel (4 b´ajton ´abr´azolva)
char Karakterek (2 b´ajton ´abr´azolva)
K´ ep t´ıpusok
Intenzit´as k´epek Bin´aris k´epek Indexelt k´epek RGB k´epek
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 30 / 74
Intenzit´ as k´ epek
Az intenzit´as k´epek olyan m´atrixok, amelyek elemei a sz¨urke´arnyalatos intenzit´asokat reprezent´alj´ak.
Ha az intenzit´as k´ep elemeiuint8 vagyuint16t´ıpus´uak, akkor a lehets´eges intenzit´as ´ert´ekek a [0,255], illetve a [0,65535]
intervallumba es˝o eg´eszek. Ebben az esetben a 0 ´ert´ek felel meg a fekete sz´ınnek.
Ha az elemek doublet´ıpus´uak, akkor az ´ert´ekek 0 ´es 1 k¨oz¨otti lebeg˝opontos ´ert´ekek lehetnek. Ebben az esetben 0 a fekete, 1 pedig a feh´er sz´ınnek felel meg.
Bin´ aris k´ epek
A bin´aris k´ep egy olyan m´atrix, melynek elemei logikai t´ıpus´u adatok.
Egy sz´am t¨omb logikaiv´a konvert´alhat´o az al´abbi m´odon:
B = logical(A)
Ha el akarjuk d¨onteni, hogy egy t¨omb logikai-e, akkor az islogical f¨uggv´enyt kell haszn´alnunk.
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 32 / 74
RGB k´ epek
Az RGB k´epek h´arom azonos m´eret˝u m´atrixb´ol ´ep¨ulnek fel, ahol az egyes m´atrixok (´un. r´etegek) az R, G ´es B sz´ıncsatorn´akhoz tartoz´o intenzit´as ´ert´ekeket tartalmazz´ak
Az ´ıgy kialakul´o k´ep egy h´aromdimenzi´os t¨ombk´ent van ´abr´azolva P´eld´aul az 1. r´etegre f(:,:,1)m´odon hivatkozhatunk
H´arom azonos m´eret˝u (R,G´esB) m´atrixb´ol a cat(3,R,G,B) utas´ıt´assal alkothatunk egy RGB k´epet
Indexelt k´ epek
Sz´ınes k´epek kisebb mem´oria foglal´as´u megjelen´ıt´esi m´odja Egy k´ep m´eret´evel megegyez˝o m´eret˝u m´atrix ´es egy sz´ınpaletta egy¨uttesen reprezent´alja a sz´ınes k´epet ebben az esetben
A sz´ınpaletta minden egyes sor´aban h´arom ´ert´ek, egy adott sz´ın R, G
´
es B komponense tal´alhat´o
A m´atrix egy eleme a paletta megfelel˝o elem´ere mutat
Forr´as: MATLAB Help
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 34 / 74
Adat t´ıpusok k¨ oz¨ otti konverzi´ ok
B=data class name(A)
Ha aCt¨ombdoublet´ıpus´u, amelynek minden eleme a [0,255]
intervallumba esik, akkor ezt lehet konvert´alniuint8 t´ıpusuv´a aD = uint8(C)utas´ıt´assal.
Ha Cvalamely ´ert´eke kisebb 0-n´al, akkor 0 lesz az konverzi´o ´ert´eke, ha pedig nagyobb mint 255, akkor 255-t´e v´alik.
K´ ep m´ atrixok konverzi´ oja
N´ev Kimeneti t´ıpus Bemeneti k´ep adat t´ıpusa im2uint8 uint8 logical,uint8,uint16´esdouble im2uint16 uint16 logical,uint8,unit16´esdouble mat2gray doublea [0,1]-ben double
im2double double logical,uint8,uint16´esdouble im2bw logical uint8,uint16´esdouble
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 36 / 74
K´ epm´ atrixok konverzi´ oja
>> f = [−0 . 5 0 . 5 ; 0 . 7 5 1 . 5 ]
f =
−0.5000 0 . 5 0 0 0 0 . 7 5 0 0 1 . 5 0 0 0
>> g = i m 2 u i n t 8 ( f )
g =
0 128
191 255
K´ epm´ atrixok konverzi´ oja
>> h = u i n t 8 ( [ 2 5 5 0 ; 128 2 0 0 ] ) ;
>> g = i m 2 d o u b l e ( h )
g =
0 . 0 9 8 0 0 . 1 9 6 1 0 . 5 0 2 0 0 . 7 8 4 3
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 38 / 74
K´ epm´ atrixok konverzi´ oja
>> f = [ 1 2 ; 3 4 ] ;
>> g = m a t 2 g r a y ( f )
g =
0 0 . 3 3 3 3 0 . 6 6 6 7 1 . 0 0 0 0
>> gb = im2bw ( g , 0 . 6 )
gb =
0 0
K´ epm´ atrixok konverzi´ oja
>> f = [ 1 2 ; 3 4 ] ;
>> gb = f > 2
gb =
0 0
1 1
>> gbv = i s l o g i c a l ( gb )
gbv = 1
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 40 / 74
Vektor indexel´ ese
>> v = [ 1 3 5 7 9 ]
v =
1 3 5 7 9
>> v ( 2 ) a n s =
3
>> w = v . ’
w = 1 3
Vektor indexel´ ese
>> v = [ 1 3 5 7 9 ] ;
>> v ( 1 : 3 ) a n s =
1 3 5
>> v ( 2 : 4 ) a n s =
3 5 7
>> v ( 3 : end )
a n s =
5 7 9
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 42 / 74
Vektor indexel´ ese
>> v = [ 1 3 5 7 9 ] ;
>> v ( : ) a n s =
1 3 5 7 9
>> v ( 1 : 2 : end )
a n s =
1 5 9
>> v ( end :−2 : 1 )
Hisztogram (p´ elda egy vektorra)
Egy sz¨urke´arnyalatos k´ep hisztogramj´anak elemeit egy vektorban lehet elt´arolni.
Ha egy sz¨urke´arnyalatos k´epet az f uint8t´ıpus´u m´atrixban t´aroljuk, akkor h = imhist(f)
el˝o´all´ıtja ah vektort. h(i) megadja, hogy h´any olyan pixel vanf-ben, melynek intenzit´asa i−1.
Ha az imhistf¨uggv´enyt visszat´er´esi
´
ert´ek n´elk¨ul h´ıvjuk meg, akkor megjelen´ıti a k´ep hisztogramj´at.
>> f = i m r e a d ( ’ cameraman . t i f ’ ) ;
>> i m h i s t ( f )
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 44 / 74
Vektor elemeinek kirajzol´ asa
Egy vektor elemeit is kirajzoltathatjuk az al´abbi m´odokon.
plot(h) bar(h)
Hisztogram v¨ odr¨ ok
Az imhistf¨uggv´enyn´el meghat´arozhat´o az is, hogy h´any ´un.
hisztogram v¨odr¨ot tartalmazzon a hisztogram.
Ebben az esetben a lehets´eges intenzit´as ´ert´ekek tartom´any´at felosztjuk annyi egyenl˝o hossz´us´ag´u tartom´anyra (v¨od¨orre), ahogy a v¨od¨orsz´amot meghat´aroztuk.
Az imhistf¨uggv´eny azt hat´arozza meg, hogy az egyes v¨odr¨okbe es˝o intenzit´as ´ert´ekek h´anyszor fordulnak el˝o a k´epen.
imhist(f,64) imhist(f,16) imhist(f,8)
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 46 / 74
M´ atrix indexel´ ese
>> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]
A =
1 2 3
4 5 6
7 8 9
>> A ( 2 , 3 ) a n s =
6
M´ atrix indexel´ ese
>> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ;
>> C3 = A ( : , 3 )
C3 = 3 6 9
>> R2 = A ( 2 , : )
R2 =
4 5 6
>> T2 = A ( 1 : 2 , 1 : 3 )
T2 =
1 2 3
4 5 6
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 48 / 74
M´ atrix indexel´ ese
>> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ;
>> B = A ;
>> B ( : , 3 ) = 0
B =
1 2 0
4 5 0
7 8 0
>> B ( 3 , : ) = [ ]
B =
M´ atrix indexel´ ese
>>A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ;
>>A( end , end )
a n s = 9
>>A( end , end−2)
a n s = 7
>>A ( 2 : end , end :−2 : 1 )
a n s =
6 4
9 7
>>E = A ( [ 1 3 ] , [ 2 3 ] )
E =
2 3
8 9
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 50 / 74
M´ atrix indexel´ ese
>> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ;
>> D = l o g i c a l ( [ 1 0 0 ; 0 0 1 ; 0 0 0 ] )
D =
1 0 0
0 0 1
0 0 0
>> A(D)
a n s =
M´ atrix indexel´ ese
>> s = sum (A ( : ) )
s = 45
>> s 1 = sum (A)
s 1 =
12 15 18
>> s 2 = sum ( sum (A ) )
s 2 = 45
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 52 / 74
El˝ ore defini´ alt t¨ omb¨ ok
zeros(M,N) El˝o´all´ıt egy M ×N m´eret˝u null´akat tartalmaz´o double t´ıpus´u m´atrixot
ones(M,N) El˝o´all´ıt egy M×N m´eret˝u egyeseket tartalmaz´o double t´ıpus´u m´atrixot
true(M,N) El˝o´all´ıt egyM×N m´eret˝u egyeseket tartalmaz´ological t´ıpus´u m´atrixot
false(M,N) El˝o´all´ıt egy M ×N m´eret˝u null´akat tartalmaz´o logical t´ıpus´u m´atrixot
rand(M,N) El˝o´allt egyM×Nm´eret˝u m´atrixot, melynek elemei egyen- letes eloszl´ast k¨ovetnek a [0,1] intervallumon
randn(M,N) El˝o´all´ıt egyM×Nm´eret˝u m´atrixot, melynek elemei stan- dard norm´alis eloszl´as´uak
El˝ ore defini´ alt t¨ omb¨ ok
>> A = 5 ∗ o n e s ( 3 )
A =
5 5 5
5 5 5
5 5 5
>> B = r a n d ( 2 , 4 )
B =
0 . 8 1 4 7 0 . 1 2 7 0 0 . 6 3 2 4 0 . 2 7 8 5 0 . 9 0 5 8 0 . 9 1 3 4 0 . 0 9 7 5 0 . 5 4 6 9
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 54 / 74
find f¨ uggv´ eny
ind = find(X)
Visszaadja az Xazon elemeinek (oszlopfolytonos) index´et, amelyek ´ert´eke nem nulla.
>> A = e y e ( 3 )
A =
1 0 0
0 1 0
0 0 1
>> i n d = f i n d (A)
i n d = 1
find f¨ uggv´ eny
ind = find(X, k, ’first’)
Visszaadja az Xels˝ok darab olyan elem´enek (oszlopfolytonos) index´et, amelyek ´ert´eke nem nulla.
>> A = e y e ( 3 )
A =
1 0 0
0 1 0
0 0 1
>> i n d = f i n d (A , 2 , ’ f i r s t ’ )
i n d = 1 5
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 56 / 74
find f¨ uggv´ eny
ind = find(X, k, ’last’)
Visszaadja az Xutols´o k darab olyan elem´enek (oszlopfolytonos) index´et, amelyek ´ert´eke nem nulla.
>> A = e y e ( 3 )
A =
1 0 0
0 1 0
0 0 1
>> i n d = f i n d (A , 2 , ’ l a s t ’ )
i n d = 5
find f¨ uggv´ eny
[row, col] = find(X)
Visszaadja az Xolyan elemeinek sor- ´es oszlop index´et, amelyek ´ert´eke nem nulla.
>>A = e y e ( 3 )
A =
1 0 0
0 1 0
0 0 1
>> [ r , c ] = f i n d (A)
r = 1 2 3
c = 1 2 3
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 58 / 74
find f¨ uggv´ eny
[row, col, value] = find(X)
Visszaadja az Xolyan elemeinek sor- ´es oszlop index´et, valamint ´ert´ek´et, amelyek ´ert´eke nem nulla.
>>A = e y e ( 3 ) ;
r = 1 2 3
c = 1 2 3
v = 1 1
sort ´ es sortrows f¨ uggv´ enyek
>> A = r o u n d ( 1 0 ∗ r a n d ( 3 ) )
A =
10 10 1
2 5 4
10 8 9
>> s o r t (A)
a n s =
2 5 1
10 8 4
10 10 9
>> s o r t r o w s (A , 1 )
a n s =
2 5 4
10 10 1
10 8 9
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 60 / 74
Aritmetikai oper´ atorok
Oper´ator N´ev MATLAB Megjegyz´esek f¨uggv´eny ´es p´eld´ak
+ T¨omb ´es
m´atrix
¨
osszead´as
plus(A,B) a+b,A+B, vagy a+A.
- T¨omb ´es
m´atrix kivon´as
minus(A,B) a-b,A-B,A-a.
.* T¨omb szorz´as times(A,B) C=A.*B,
C(I,J)=A(I,J)*B(I,J).
* M´atrix szorz´as mtimes(A,B) A*B, hagyom´anyos m´atrix szorz´as, vagya*A, m´atrix szorz´asa skal´arral.
Aritmetikai oper´ atorok
Oper´ator N´ev MATLAB Megjegyz´esek f¨uggv´eny and p´eld´ak
./ T¨omb jobb
oszt´asa
rdivide(A,B) C=A./B,
C(I,J)=A(I,J)/B(I,J).
.\ T¨omb bal oszt´asa
ldivide(A,B) C=A.\B,
C(I,J)=B(I,J)/A(I,J).
/ M´atrix
jobb oszt´a- sa
mrdivide(A,B) A/B k¨ozel azonos A*inv(B)-vel, de a sz´am´ıt´asi pontoss´agt´ol f¨ugg.
\ M´atrix bal
oszt´asa
mldivide(A,B) A\B k¨ozel azonos inv(A)*B-vel, de a sz´am´ıt´asi pontoss´agt´ol f¨ugg.
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 62 / 74
Aritmetikai oper´ atorok
Oper´ator N´ev MATLAB Megjegyz´esek f¨uggv´eny ´es p´eld´ak .^ T¨omb hat-
v´anyoz´asa
power(A,B) Ha C=A.^B, akkor
C(I,J)=A(I,J)^B(I,J).
^ M´atrix hat-
v´anyoz´asa
mpower(A,B) N´egyzetes m´atrix sz´am kitev˝on, vagy sz´am n´egyzetes m´atrix kitev˝on.
.’ Vektor ´es
m´atrix tran- szpon´al´asa
transpose(A) A.’.
’ Vektor ´es
m´atrix kom- plex kon- jug´altj´anak
ctranspose(A) A’.
Aritmetikai oper´ atorok
Oper´ator N´ev MATLAB Megjegyz´esek f¨uggv´eny and p´eld´ak + Un´aris plusz uplus(A) +A ugyanaz mint0+A.
- Un´aris m´ınusz uminus(A) -A ugyanaz mint 0-A vagy -1*A.
: Kett˝ospont Kor´abban t´argyaltuk.
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 64 / 74
K´ ep aritmetikai f¨ uggv´ enyek
F¨uggv´eny Le´ır´as
imadd Osszead k´¨ et k´epet, vagy egy konstanst hozz´aad egy k´ephez.
imsubtract Kivon k´et k´epet, vagy egy konstanst kivon egy k´epb˝ol.
immultiply Osszeszoroz k´¨ et k´epet, ahol a szorz´as az ¨osszetartoz´o elemek k¨oz¨ott hajt´odik v´egre, vagy megszoroz egy kon- stanssal egy k´epet.
imdivide Eloszt k´et k´epet, ahol az oszt´as az ¨osszetartoz´o ele- mek k¨oz¨ott hajt´odik v´egre, vagy eloszt egy k´epet egy sz´ammal.
imabsdiff Kisz´am´ıtja k´et k´ep k¨ul¨onbs´eg´enek abszolut´ert´ek´et.
imcomplement Egy k´ep komplementer´et ´all´ıtja el˝o.
imlincomb K´et vagy t¨obb k´ep line´aris kombin´aci´oj´at ´all´ıtja el˝o.
Osszehasonl´ıt´ ¨ o oper´ atorok
Oper´ator N´ev
< Kisebb
<= Kisebb vagy egyenl˝o
> Nagyobb
>= Nagyobb vagy egyenl˝o
== Egyenl˝o
~= Nem egyenl˝o
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 66 / 74
Osszehasonl´ıt´ ¨ o oper´ atorok
>> A=[1 2 3 ; 4 5 6 ; 7 8 9 ] ;
>> B=[0 2 4 ; 3 5 6 ; 3 4 9 ] ;
>> A==B
a n s =
0 1 0
0 1 1
0 0 1
>> A>=B a n s =
1 1 0
Logikai oper´ atorok
Oper´ator N´ev
& ES´
| VAGY
~ NEM
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 68 / 74
Logikai oper´ atorok
>> A=[1 2 0;0 4 5];
>> B=[1 -2 3;0 1 1];
>> A&B ans =
1 1 0
0 1 1
Logikai f¨ uggv´ enyek
F¨uggv´eny Megjegyz´esek
xor Azxorf¨uggv´eny pontosan akkor ad 1-et vissza, ha mindk´et param´eter k¨ul¨onb¨oz˝o.
all Az all f¨uggv´eny pontosan akkor ad 1-et vissza, ha a be- menet minden eleme nem nulla.
any Az any f¨uggv´eny pontosan akkor ad 0-´at vissza, ha a be- menet minden eleme nulla.
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 70 / 74
Logikai f¨ uggv´ enyek
>> A=[1 2 3;4 5 6];
>> B=[0 -1 1;0 0 1];
>> xor(A,B) ans =
1 0 0
1 1 0
>> all(A) ans =
1 1 1
>> any(A) ans =
1 1 1
>> all(B) ans =
0 0 1
Logikai f¨ uggv´ enyek
F¨uggv´eny Le´ır´as
iscell(C) Igaz, haCegy cella t¨omb.
iscellstr(s) Igaz, hasstringek cella t¨ombje.
ischar(s) Igaz, hasegy karakter string.
isempty(A) Igaz, haAegy ¨ures t¨omb,[].
isequal(A,B) Igaz, haA´esBelemei ´es dimenzi´oi azonosak.
isfield(S,’name’) Igaz, ha’name’egy mez˝oje az Sstrukt´ur´anak.
isfinite(A) IgazAazon elemein´el, amelyek v´egesek.
isinf(A) IgazAazon elemein´el, amelyek v´egtelenek.
isletter(A) Igaz A azon elemein´el, amelyek bet˝uk vagy
´ır´asjelek.
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 72 / 74
Logikai f¨ uggv´ enyek
F¨uggv´eny Le´ır´as
islogical(A) Igaz, ha Aegy logikai t¨omb.
ismember(A,B) IgazAazon elemein´el, amelyek B-nek is elemei.
isnan(A) IgazAazon elemein´el, amelyek NaN-ok.
isnumeric(A) Igaz, ha Aegy numerikus t¨omb.
isprime(A) IgazAazon elemein´el, amelyek pr´ımek.
isreal(A) Igaz A azon elemein´el, amelyeknek 0 a k´epzetes r´esz¨uk.
isspace(A) IgazAazon elemein´el, ahol nincs t´enyelges elem.
issparse(A) Igaz, ha Aegy ´un. ritkam´atrix.
isstruct(S) Igaz, ha Segy strukt´ura.
N´ eh´ any fontos v´ altoz´ o ´ es konstans
Szintaxis Ert´´ ek
ans Legutols´o v´alasz (v´altoz´o). Ha nem lett bal´ert´ek megadva, akkor MATLAB automatikusan az ans v´altoz´oban t´arolja az eredm´enyt.
eps Lebeg˝opontos relat´ıv pontoss´ag. Az 1.0 ´es az ˝ot k¨ovetkez˝o legkisebb sz´am k¨oz¨otti t´avols´ag.
i(vagyj) K´epzetes egys´eggy¨ok, pl.: 1+2i.
NaNvagy nan Azt jel¨oli, hogy az eredm´eny nem ´ertelmezett (pl.: 0/0).
pi 3.14159265358979
realmax A legnagyobb lebeg˝opontos sz´am, amit a sz´am´ıt´og´ep
´
abr´azolni tud.
realmin A legkisebb pozit´ıv lebeg˝opontos sz´am, amit a sz´am´ıt´og´ep ´abr´azolni tud.
computer A sz´am´ıt´og´ep t´ıpusa.
version MATLAB verzi´o, mint sz¨oveg.
Sergy´an (OE NIK) MATLAB 2012. febru´ar 17. 74 / 74