M´ern¨oki informatika korszer˝u fejleszt˝o eszk¨ozei MATLAB alapok
Sergy´an Szabolcs
[email protected] ´ Obudai Egyetem Neumann J´ anos Informatikai Kar
2013. febru´ar 11.
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
1 / 75
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: users.nik.uni-obuda.hu/sergyan
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
2 / 75
MATLAB MATLAB = MATrix LABoratory Kezdetben matematikai szoftver volt Ma m´ar ´altal´anos m´ern¨ oki szoftvercsomag Az alapcsomaghoz u ´n. 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
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
3 / 75
MATLAB k¨ornyezet
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
4 / 75
MATLAB k¨ornyezet Parancs ablak
Ide ´ırhatunk parancsokat Itt jelennek meg a m˝ uveletek eredm´enyei
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
5 / 75
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
2013. febru´ ar 11.
6 / 75
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 u ´t 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
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
7 / 75
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 u ´jra v´egrehajthat´o
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
8 / 75
MATLAB k¨ornyezet Editor
Programok ´ır´as´ara szolg´al´ o ter¨ ulet
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
9 / 75
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, ahol x ´es y 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
2013. febru´ ar 11.
10 / 75
Koordin´ata konvenci´ok
Forr´ as: DIPUM
sz´amos k´epfeldolgoz´as k¨ onyvben Sergy´ an (OE NIK)
MATLAB
a MATLAB-ban 2013. febru´ ar 11.
11 / 75
K´epek mint m´atrixok Egy digit´alis k´epet m´atrixk´ent tudunk ´abr´azolni: f(1, 1) f(1, 2) · · · f(1, N) f(2, 1) f(2, 2) · · · f(2, N) f= .. .. .. .. . . . .
f(M, 1) f(M, 2) · · · f(M, N)
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
12 / 75
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’);
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
13 / 75
T´amogatott k´epform´atumok Form´ atum neve TIFF JPEG GIF BMP PNG XWD
Le´ır´ as Tagged Image File Format Joint Photographic Experts Group Graphics Interchange Format Windows Bitmap Portable Network Graphics X Window Dump
Sergy´ an (OE NIK)
MATLAB
Kiterjeszt´ es .tif, .tiff .jpg, .jpeg .gif .bmp .png .xwd
2013. febru´ ar 11.
14 / 75
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
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
15 / 75
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, hogy low ´ert´eke az intenzit´asok minimuma, high pedig az intenzit´asok maximuma
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
16 / 75
K´epek megjelen´ıt´ese Egy alacsony intenzit´as´ u pixeleket tartalmaz´ o k´ep megjelen´ıt´ese imshow(f), illetve imshow(f, []) paranccsal
Forr´ as: DIPUM
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
17 / 75
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
2013. febru´ ar 11.
18 / 75
M´as megjelen´ıt´ese m´od >> whos boy Name boy >> >> >> >> >> >> >> >> >> >>
Size 808x1010x3
Bytes
Class
2448240
uint8
Attributes
%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’)
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
19 / 75
M´as megjelen´ıt´esi m´od
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
20 / 75
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)
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
21 / 75
Konverzi´o ´es rajzol´as a k´epre
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
22 / 75
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’)
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
23 / 75
Intenzit´asok egy adott szakasz ment´en
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
24 / 75
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.
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
25 / 75
K´epek ment´ese
q = 100
q = 50
q = 25
q = 15
q=5
q=0
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
26 / 75
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’ CodingProcess: ’Sequential’ Comment: {}
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
27 / 75
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
2013. febru´ ar 11.
28 / 75
A MATLAB adat t´ıpusai N´ ev double uint8 uint16 uint32 int8 int16 int32 single char logical
Le´ır´ as Dupla pontoss´ag´ u lebeg˝ opontos sz´am −10308 ´es 10308 k¨oz¨otti ´ert´ekekkel (8 b´ajton ´abr´azolva) El˝ojel n´elk¨ uli 8 bites eg´eszek a [0,255] intervallumban El˝ojel n´elk¨ uli 16 bites eg´eszek a [0,65535] intervallumban El˝ojel n´elk¨ uli 32 bites eg´eszek a [0,4294967295] intervallumban El˝ojeles 8 bites eg´eszek a [-128,127] intervallumban El˝ojeles 16 bites eg´eszek a [-32768,32767] intervallumban El˝ojeles 32 bites eg´eszek a [-2147483648,2147483647] intervallumban Egyszeres pontoss´ag´ u lebeg˝ opontos sz´am −1038 ´es 1038 k¨oz¨otti ´ert´ekekkel (4 b´ajton ´abr´azolva) Karakterek (2 b´ajton ´abr´azolva) 0 ´es 1 ´ert´ekek (1 b´ajton ´abr´azolva)
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
29 / 75
K´ep t´ıpusok Intenzit´as k´epek Bin´aris k´epek Indexelt k´epek RGB k´epek
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
30 / 75
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 elemei uint8 vagy uint16 t´ı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 double t´ı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.
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
31 / 75
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
2013. febru´ ar 11.
32 / 75
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 ´es B) m´atrixb´ ol a cat(3,R,G,B) utas´ıt´assal alkothatunk egy RGB k´epet
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
33 / 75
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
2013. febru´ ar 11.
34 / 75
Adat t´ıpusok k¨oz¨otti konverzi´ok B=data class name(A)
Ha a C t¨omb double t´ıpus´ u, amelynek minden eleme a [0, 255] intervallumba esik, akkor ezt lehet konvert´alni uint8 t´ıpusuv´a a D = uint8(C) utas´ıt´assal. Ha C valamely ´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.
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
35 / 75
K´ep m´atrixok konverzi´oja N´ ev im2uint8 im2uint16 mat2gray im2double im2bw
Kimeneti t´ıpus uint8 uint16 double a [0, 1]-ben double logical
Sergy´ an (OE NIK)
Bemeneti k´ ep adat t´ıpusa logical, uint8, uint16 ´es double logical, uint8, unit16 ´es double double logical, uint8, uint16 ´es double uint8, uint16 ´es double
MATLAB
2013. febru´ ar 11.
36 / 75
K´epm´atrixok konverzi´oja >> f = [ −0.5 0 . 5 ; 0 . 7 5 1 . 5 ] f = −0.5000 0.7500
0.5000 1.5000
>> g = i m 2 u i n t 8 ( f ) g = 0 191
128 255
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
37 / 75
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.0980 0.5020
Sergy´ an (OE NIK)
0.1961 0.7843
MATLAB
2013. febru´ ar 11.
38 / 75
K´epm´atrixok konverzi´oja >> f = [ 1 2 ; 3 4 ] ; >> g = mat2gray ( f ) g = 0 0.6667
0.3333 1.0000
>> gb = im2bw ( g , 0 . 6 ) gb = 0 1
0 1
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
39 / 75
K´epm´atrixok konverzi´oja >> f = [ 1 2 ; 3 4 ] ; >> gb = f > 2 gb = 0 1
0 1
>> gbv = i s l o g i c a l ( gb ) gbv = 1
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
40 / 75
Vektor indexel´ese >> v = [ 1 3 5 7 9 ] v = 1
3
5
7
9
>> v ( 2 ) ans = 3 >> w = v . ’ w = 1 3 5 7 9 Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
41 / 75
Vektor indexel´ese >> v = [ 1 3 5 7 9 ] ; >> v ( 1 : 3 ) ans = 1
3
5
5
7
7
9
>> v ( 2 : 4 ) ans = 3 >> v ( 3 : end ) ans = 5
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
42 / 75
Vektor indexel´ese >> v = [ 1 3 5 7 9 ] ; >> v ( : ) ans = 1 3 5 7 9 >> v ( 1 : 2 : end ) ans = 1
5
9
>> v ( end : − 2 : 1 ) ans = 9
5
Sergy´ an (OE NIK)
1 MATLAB
2013. febru´ ar 11.
43 / 75
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 uint8 t´ıpus´ u m´atrixban t´aroljuk, akkor h = imhist(f) el˝ o´all´ıtja a h vektort. h(i) megadja, hogy h´any olyan pixel van f -ben, melynek intenzit´asa i − 1. Ha az imhist f¨ 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
2013. febru´ ar 11.
44 / 75
Vektor elemeinek kirajzol´asa Egy vektor elemeit is kirajzoltathatjuk az al´abbi m´ odokon.
plot(h)
Sergy´ an (OE NIK)
bar(h)
MATLAB
2013. febru´ ar 11.
45 / 75
Hisztogram v¨odr¨ok Az imhist f¨ uggv´enyn´el meghat´arozhat´ o az is, hogy h´any u ´n. 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 imhist f¨ 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)
Sergy´ an (OE NIK)
imhist(f,16)
MATLAB
imhist(f,8)
2013. febru´ ar 11.
46 / 75
M´atrix indexel´ese >> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] A = 1 4 7
2 5 8
3 6 9
>> A ( 2 , 3 ) ans = 6
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
47 / 75
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 4
2 5
Sergy´ an (OE NIK)
3 6 MATLAB
2013. febru´ ar 11.
48 / 75
M´atrix indexel´ese >> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ; >> B = A ; >> B ( : , 3 ) = 0 B = 1 4 7
2 5 8
0 0 0
>> B ( 3 , : ) = [ ] B = 1 4
2 5
Sergy´ an (OE NIK)
0 0 MATLAB
2013. febru´ ar 11.
49 / 75
M´atrix indexel´ese >> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ; >> A( end , end ) ans = 9 >> A( end , end −2) ans = 7 >> A ( 2 : end , end : −2:1) ans = 6 9
4 7
>> E = A ( [ 1 3 ] , [ 2 3 ] ) E = 2 8
3 9
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
50 / 75
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 0
0 1 0
>> A(D) ans = 1 6 Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
51 / 75
M´atrix indexel´ese >> s = sum (A ( : ) ) s = 45 >> s 1 = sum (A) s1 = 12
15
18
>> s 2 = sum ( sum (A ) ) s2 = 45
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
52 / 75
El˝ore defini´alt t¨omb¨ok zeros(M,N) ones(M,N) true(M,N) false(M,N) rand(M,N) randn(M,N)
Sergy´ an (OE NIK)
El˝o´all´ıt egy M × N m´eret˝ u null´akat tartalmaz´o double t´ıpus´ u m´atrixot El˝o´all´ıt egy M × N m´eret˝ u egyeseket tartalmaz´o double t´ıpus´ u m´atrixot El˝o´all´ıt egy M × N m´eret˝ u egyeseket tartalmaz´o logical t´ıpus´ u m´atrixot El˝o´all´ıt egy M × N m´eret˝ u null´akat tartalmaz´o logical t´ıpus´ u m´atrixot El˝o´allt egy M ×N m´eret˝ u m´atrixot, melynek elemei egyenletes eloszl´ast k¨ ovetnek a [0, 1] intervallumon El˝o´all´ıt egy M ×N m´eret˝ u m´atrixot, melynek elemei standard norm´alis eloszl´as´ uak
MATLAB
2013. febru´ ar 11.
53 / 75
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.8147 0.9058
Sergy´ an (OE NIK)
0.1270 0.9134
0.6324 0.0975
MATLAB
0.2785 0.5469
2013. febru´ ar 11.
54 / 75
find f¨uggv´eny ind = find(X) Visszaadja az X azon 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) ind = 1 5 9 Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
55 / 75
find f¨uggv´eny ind = find(X, k, ’first’) Visszaadja az X els˝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 , ’ f i r s t ’ ) ind = 1 5
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
56 / 75
find f¨uggv´eny ind = find(X, k, ’last’) Visszaadja az X utols´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 ’ ) ind = 5 9
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
57 / 75
find f¨uggv´eny [row, col] = find(X) Visszaadja az X olyan 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
2013. febru´ ar 11.
58 / 75
find f¨uggv´eny [row, col, value] = find(X) Visszaadja az X olyan 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 1
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
59 / 75
sort ´es sortrows f¨uggv´enyek >> A = r o u n d ( 1 0 ∗ r a n d ( 3 ) ) A = 10 2 10
10 5 8
1 4 9
5 8 10
1 4 9
>> s o r t (A) ans = 2 10 10
>> s o r t r o w s (A , 1 ) ans = 2 10 10
5 10 8
Sergy´ an (OE NIK)
4 1 9 MATLAB
2013. febru´ ar 11.
60 / 75
Aritmetikai oper´atorok Oper´ ator
N´ ev
.*
T¨omb ´es m´atrix ¨osszead´as T¨omb ´es m´atrix kivon´as T¨omb szorz´as
*
M´atrix szorz´as
+
-
Sergy´ an (OE NIK)
MATLAB f¨ uggv´ eny plus(A,B)
Megjegyz´ esek ´ es p´ eld´ ak a+b, A+B, vagy a+A.
minus(A,B)
a-b, A-B, A-a.
times(A,B)
C=A.*B, C(I,J)=A(I,J)*B(I,J). A*B, hagyom´anyos m´atrix szorz´as, vagy a*A, m´atrix szorz´asa skal´arral.
mtimes(A,B)
MATLAB
2013. febru´ ar 11.
61 / 75
Aritmetikai oper´atorok Oper´ ator ./ .\ /
\
N´ ev T¨omb jobb oszt´asa T¨omb bal oszt´asa M´atrix jobb oszt´asa M´atrix bal oszt´asa
Sergy´ an (OE NIK)
MATLAB f¨ uggv´ eny rdivide(A,B) ldivide(A,B) mrdivide(A,B)
mldivide(A,B)
MATLAB
Megjegyz´ esek and p´ eld´ ak C=A./B, C(I,J)=A(I,J)/B(I,J). C=A.\B, C(I,J)=B(I,J)/A(I,J). A/B k¨ozel azonos A*inv(B)-vel, de a sz´am´ıt´asi pontoss´agt´ol f¨ ugg. A\B k¨ozel azonos inv(A)*B-vel, de a sz´am´ıt´asi pontoss´agt´ol f¨ ugg.
2013. febru´ ar 11.
62 / 75
Aritmetikai oper´atorok Oper´ ator .^ ^
.’
’
N´ ev T¨omb hatv´anyoz´asa M´atrix hatv´anyoz´asa Vektor ´es m´atrix transzpon´al´asa Vektor ´es m´atrix komplex konjug´altj´anak transzpon´al´asa
Sergy´ an (OE NIK)
MATLAB f¨ uggv´ eny power(A,B)
transpose(A)
Megjegyz´ esek ´ es p´ eld´ ak Ha C=A.^B, akkor C(I,J)=A(I,J)^B(I,J). N´egyzetes m´atrix sz´am kitev˝ on, vagy sz´am n´egyzetes m´atrix kitev˝on. A.’.
ctranspose(A)
A’.
mpower(A,B)
MATLAB
2013. febru´ ar 11.
63 / 75
Aritmetikai oper´atorok Oper´ ator
N´ ev
+ -
Un´aris plusz Un´aris m´ınusz
:
Kett˝ospont
Sergy´ an (OE NIK)
MATLAB f¨ uggv´ eny uplus(A) uminus(A)
MATLAB
Megjegyz´ esek and p´ eld´ ak +A ugyanaz mint 0+A. -A ugyanaz mint 0-A vagy -1*A. Kor´abban t´argyaltuk.
2013. febru´ ar 11.
64 / 75
K´ep aritmetikai f¨uggv´enyek F¨ uggv´ eny imadd imsubtract immultiply
imdivide
imabsdiff imcomplement imlincomb
Sergy´ an (OE NIK)
Le´ır´ as ¨ Osszead k´et k´epet, vagy egy konstanst hozz´aad egy k´ephez. Kivon k´et k´epet, vagy egy konstanst kivon egy k´epb˝ol. ¨ Osszeszoroz k´et k´epet, ahol a szorz´as az ¨osszetartoz´o elemek k¨ oz¨ ott hajt´ odik v´egre, vagy megszoroz egy konstanssal egy k´epet. Eloszt k´et k´epet, ahol az oszt´as az ¨osszetartoz´o elemek k¨oz¨ ott hajt´ odik v´egre, vagy eloszt egy k´epet egy sz´ammal. Kisz´am´ıtja k´et k´ep k¨ ul¨ onbs´eg´enek abszolut´ert´ek´et. Egy k´ep komplementer´et ´all´ıtja el˝ o. K´et vagy t¨ obb k´ep line´aris kombin´aci´oj´at ´all´ıtja el˝o.
MATLAB
2013. febru´ ar 11.
65 / 75
¨ 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
2013. febru´ ar 11.
66 / 75
¨ 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 ans = 0 0 0
1 1 0
0 1 1
1 1 1
0 1 1
>> A>=B ans = 1 1 1
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
67 / 75
Logikai oper´atorok Oper´ ator & | ~
N´ ev ´ ES VAGY NEM
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
68 / 75
Logikai oper´atorok >> A=[1 2 0;0 4 5]; >> B=[1 -2 3;0 1 1]; >> A&B ans = 1 0
1 1
Sergy´ an (OE NIK)
0 1
MATLAB
2013. febru´ ar 11.
69 / 75
Logikai f¨uggv´enyek F¨ uggv´ eny xor all any
Megjegyz´ esek Az xor f¨ uggv´eny pontosan akkor ad 1-et vissza, ha mindk´et param´eter k¨ ul¨ onb¨ oz˝ o. Az all f¨ uggv´eny pontosan akkor ad 1-et vissza, ha a bemenet minden eleme nem nulla. Az any f¨ uggv´eny pontosan akkor ad 0-´at vissza, ha a bemenet minden eleme nulla.
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
70 / 75
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 >> any(B) Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
71 / 75
Logikai f¨uggv´enyek F¨ uggv´ eny iscell(C) iscellstr(s) ischar(s) isempty(A) isequal(A,B) isfield(S,’name’) isfinite(A) isinf(A) isletter(A)
Sergy´ an (OE NIK)
Le´ır´ as Igaz, ha C egy cella t¨ omb. Igaz, ha s stringek cella t¨ ombje. Igaz, ha s egy karakter string. Igaz, ha A egy u ¨res t¨ omb,[]. Igaz, ha A ´es B elemei ´es dimenzi´oi azonosak. Igaz, ha ’name’ egy mez˝ oje az S strukt´ ur´anak. Igaz A azon elemein´el, amelyek v´egesek. Igaz A azon elemein´el, amelyek v´egtelenek. Igaz A azon elemein´el, amelyek bet˝ uk vagy ´ır´asjelek.
MATLAB
2013. febru´ ar 11.
72 / 75
Logikai f¨uggv´enyek F¨ uggv´ eny islogical(A) ismember(A,B) isnan(A) isnumeric(A) isprime(A) isreal(A) isspace(A) issparse(A) isstruct(S)
Sergy´ an (OE NIK)
Le´ır´ as Igaz, ha A egy logikai t¨ omb. Igaz A azon elemein´el, amelyek B-nek is elemei. Igaz A azon elemein´el, amelyek NaN-ok. Igaz, ha A egy numerikus t¨ omb. Igaz A azon elemein´el, amelyek pr´ımek. Igaz A azon elemein´el, amelyeknek 0 a k´epzetes r´esz¨ uk. Igaz A azon elemein´el, ahol nincs t´enyelges elem. Igaz, ha A egy u ´n. ritkam´atrix. Igaz, ha S egy strukt´ ura.
MATLAB
2013. febru´ ar 11.
73 / 75
N´eh´any fontos v´altoz´o ´es konstans Szintaxis ans
eps i (vagy j) NaN vagy nan pi realmax realmin computer version Sergy´ an (OE NIK)
´ ek Ert´ 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. Lebeg˝opontos relat´ıv pontoss´ag. Az 1.0 ´es az ˝ot k¨ovetkez˝ o legkisebb sz´am k¨ oz¨ otti t´avols´ag. K´epzetes egys´eggy¨ ok, pl.: 1+2i. Azt jel¨oli, hogy az eredm´eny nem ´ertelmezett (pl.: 0/0). 3.14159265358979 A legnagyobb lebeg˝ opontos sz´am, amit a sz´am´ıt´og´ep ´abr´azolni tud. A legkisebb pozit´ıv lebeg˝ opontos sz´am, amit a sz´am´ıt´og´ep ´abr´azolni tud. A sz´am´ıt´ og´ep t´ıpusa. MATLAB verzi´ o, mint sz¨ oveg. MATLAB
2013. febru´ ar 11.
74 / 75
Intenzit´as transzform´aci´ok megval´os´ıt´asa
Sergy´ an (OE NIK)
MATLAB
2013. febru´ ar 11.
75 / 75