matlab bolum1

82
1 MATLAB VE UYGULAMALARI Yrd.Doç.Dr. Hikmet ÇAĞLAR İstanbul Kültür Üniversitesi Matematik-Bilgisayar Bölümü. Kısa MATLAB Tarihi 1984 yılında Cleve Moler ve Jack Little tarafında kurulan MathWorks, Inc. tarfından geliştirilen bir programdır.MATLAB(MATrix LABoratory) matrix tabanlı saysal hesaplamalar yapabilmek için tasarlanmıştır.C++ benzeri programlama, data girişi, grafik olanaklar ve birçok toolboxa sahiptir. MATLAB Endüstri Uygulamaları Signal generation RADAR/SONAR simulasyonu Modelleme ve digital signal processing modellerin analizi Complex matematik hesaplamaları Control Sistemlerinin Modellenmesi Yardım alınabilecek “MathWorks website” adresi: http://www.mathworks.com Command Window MATLAB icon tıklanarak program çalıştırılır. Command Window ekranı görülür. Bu ekran kullanılarak basit komutlar ve program yazılabilir.

Upload: okan-oeztuerk

Post on 21-Apr-2015

246 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Matlab Bolum1

1

MATLAB VE UYGULAMALARI Yrd.Doç.Dr. Hikmet ÇAĞLAR İstanbul Kültür Üniversitesi Matematik-Bilgisayar Bölümü.

Kısa MATLAB Tarihi

1984 yılında Cleve Moler ve Jack Little tarafında kurulan MathWorks, Inc. tarfından geliştirilen bir programdır.MATLAB(MATrix LABoratory) matrix tabanlı saysal hesaplamalar yapabilmek için tasarlanmıştır.C++ benzeri programlama, data girişi, grafik olanaklar ve birçok toolboxa sahiptir.

MATLAB Endüstri Uygulamaları

• Signal generation • RADAR/SONAR simulasyonu

• Modelleme ve digital signal processing modellerin analizi • Complex matematik hesaplamaları • Control Sistemlerinin Modellenmesi

Yardım alınabilecek “MathWorks website” adresi:

http://www.mathworks.com

Command Window MATLAB icon tıklanarak program çalıştırılır. Command Window ekranı görülür. Bu ekran kullanılarak basit komutlar ve program yazılabilir.

Page 2: Matlab Bolum1

2

Örneğin,

S=1+2

S=

3

f=sin(pi/4)

f=

0.7071

Burada kullanılan sin,pi tanımlı fonksiyon ve sabittir.

Değişken isimleri harfle başlar, sayılar ve underscores içerebilir.Bir değişken içinde en fazla 31 karekter kullanılabilir. Format long komutuyla hesaplamada kullanılan anlamlı digit sayısı değiştirilebilir. Örneğin daha once hesaplanan f değeri, f = 0.70710678118655 Tekrar default formata donmek için format short f = 0.7071 Exit komutu ile MATLAB tan çıkılır. Bu arada Workspace kaybolur. MATLAB 3 tip sayı sistemine sahiptir. integers real complex

İşlemsel Semboller Toplama + Çıkarma – Çarpma * bölme / veya \ üs alma ^ MATLAB ta iki bölme işlemi farklıdır, r = 47/3 r = 15.6667 3/47 işlemi aşağıdaki gibi yapılabilir.

Page 3: Matlab Bolum1

3

d = 47\3 (3/47) d = 0.0638 workspace alanındaki değişkenler save komutu ile saklanır.Load komutu ile bu alan yüklenebilir.Clear komutu workspace alanını siler, save d clear load d d = 0.0638 Whos komutu ile workspace alanındaki tüm değişkenler görülebilir. whos Name Size Bytes Class s 1x1 8 double array Grand total is 1 elements using 8 bytes Name Size Bytes Class ans 1x1 16 double array (complex) fun 1x1 8 double array ld 1x1 8 double array rd 1x1 8 double array s 1x1 8 double array xi 1x1 8 double array xr 1x1 8 double array Grand total is 7 elements using 64 bytes who komutu ile sadece değişken isimleri listelenir. Your variables are: ans ld s xr fun rd xi Herhangibir komut hakkında yardım almak için help kullanılır, Help plot Eğer yapılan bir işlemin sonucunu command window ekranında gormek istemiyorsanız deyimin sonuna ; işareti koyuınuz. S=12+3; clc : command window ekranını siler. quit : MATLAB tan çıkışı sağlar.

MATLAB Workspace Bu ekran kullanılarak değişkenler erişilerek düzeltmeler yapılabilir.Herhangibir değişken silinmek istenirse clear komutu kullanılır.Clear tüm değişkenleri workspace den siler. Clear a , sadece a değişkenini siler.

Page 4: Matlab Bolum1

4

MATLAB da kullanılan Trigonometric fonksiyonlar, sin - Sine. sinh - Hyperbolic sine. asin - Inverse sine. asinh - Inverse hyperbolic sine. cos - Cosine. cosh - Hyperbolic cosine. acos - Inverse cosine. acosh - Inverse hyperbolic cosine. tan - Tangent. tanh - Hyperbolic tangent. atan - Inverse tangent. atan2 - Four quadrant inverse tangent. atanh - Inverse hyperbolic tangent. sec - Secant. sech - Hyperbolic secant. asec - Inverse secant. asech - Inverse hyperbolic secant. csc - Cosecant. csch - Hyperbolic cosecant. acsc - Inverse cosecant. acsch - Inverse hyperbolic cosecant. cot - Cotangent. coth - Hyperbolic cotangent. acot - Inverse cotangent. acoth - Inverse hyperbolic cotangent.

Sayısal fonksiyonlar fix reel sayının tam kısmını verir floor negatif sayıya yuvarlama. ceil pozitif sayıya yuvarlama. round En yakın integer sayıya yuvarlama. rem Bölmeden sonar kalan. sign Signum function. (1/0) Inf , sonsuz (0/0 ) nan sqrt kare kök conv convolution fft fast Fourier transform ifft inverse fast Fourier transform length length of a vector size bir matrisin booyutlarını verir gcd en büyük ortak bölen lcm en küçük ortak bölen exp üstel fonksiyon log doğal logoritma log10 10 tabanlı logoritma mod moduler aritmetik Değişkenler

Çalışma sırasında tüm değişkenler belirli bir formatta kullanılabilir.İstenirse tek olarakta format tanımı yapılabilir.

Page 5: Matlab Bolum1

5

v = 12.345678901234567 değerini tanımlarsak, format short 12.3457 long 12.34567890123457 short e 1.2346e+001 long e 1.234567890123457e+001 rat 1000/81

Sanal sayılar a+bi şeklinde tanımlanır,

3+2i

ans =

3.0000 + 2.0000i

sqrt(-1)

ans =

0 + 1.0000i

Sanal saylarla ilgili fonksiyonlar. abs : Komplex sayının magnitude (real sayılar için mutlak değer) angle : Komplex sayının pirimitiv argumanı cos : Komplex sayının cos fonksiyonu sin : Komplex sayının sin fonksiyonu exp : Komplex sayının üstel fonksiyonu real : Komplex sayının real kısmı imag : Komplex sayının sanal kısmı conj : Komplex sayının eşleniği

String String bilgiler aşağıdaki gibi tanımlanır. str = ' MATLAB ' str = MATLAB

Page 6: Matlab Bolum1

6

Herhangibir stringin ASCII değerleri double fonksiyonu ile bulunur, str1 = double(str) str1 = 77 65 84 76 65 66 ASCII kodlardan karekter formuna dönmek için char fonksiyonu kullanılabilir. str2 = char(str1) str2 = MATLAB

İki stringi strcmp fonksiyonu ile karşılaştırılabiliriz. iseq = strcmp(str, str2) iseq = 1

İki string stscat fonksiyonu ile birleştirilebilir,

strcat(str,str2) ans = MATLABMATLAB Elemanları string olan vektör tanımlayalım,. a = {'ad = '; 'soyad = '; 'telefon = '} a = 'ad = ' 'soyad = ' 'telefon = ' MATLAB ta karekter kontrolu için 2 fonksiyon mevcuttur, isletter ve isspace. isletter(str) ans =

1 1 1 1 1 1 Eğer karekter harf ise 1 aksi taktirde 0 döner. isspace(str) ans =

Page 7: Matlab Bolum1

7

0 0 0 0 0 0 Eğer karekter boşluk ise 1 aksi taktirde 0 döner. Random sayı üreten randn fonksiyonu ile 3x3 matris üretelim, A = randn(3) A = -0.4326 0.2877 1.1892 -1.6656 -1.1465 -0.0376 0.1253 1.1909 0.3273 int2str fonksiyonu sayıları tamsayı olarak stringe çevirir B = int2str(A) B = 0 0 1 -2 -1 0 0 1 0 num2str fonksiyonu ise reel sayı olarak çevirir,

C = num2str(A) C = -0.43256 0.28768 1.1892 -1.6656 -1.1465 -0.037633 0.12533 1.1909 0.32729 D = num2str(A, 18) D = -0.43256481152822068 0.28767642035854885 1.1891642016521031 -1.665584378238097 -1.1464713506814637 -0.037633276593317645 0.12533230647483068 1.1909154656429988 0.32729236140865414

Input Output Sisteme bilgi girişi için input fonksiyonu kullanılr, A=input(‘bir sayı giriniz’) Girilen değer değişkene atanır. Herhangibir değeri görüntülemek için disp kullanılır, disp( 'MATLAB' ); disp(a) disp( [ 'Kültür ' 'Universitesi' ] ); ad = 'ali'; disp( [ 'merhaba ' ad ] ); d = [ num2str(16) '-subat-' num2str(2004) ];

Page 8: Matlab Bolum1

8

disp(d); 16-subat-2004 x = 44.2; disp( [ 'sonuc = ' num2str(x) ] ); cevap=44.2 formatlı çıkış için, fprintf fonksiyonu kullanılır, fprintf( format, data ) format için aşağıdaki karekterler kullanılır, %d integer %f floating point format %e exponential format \n new line character \t tab character fprintf( 'yarıçapı %d olan dairenin alanı %f', 3, pi*3^2 ); yarıçapı 3 olan dairenin alan 28.274334 x = pi; fprintf( 'x = %10.2f', x ); x = 3.14

Save , Load Bir dosya veya değişken save komutu ile saklanır, load ile çalışma alanına getirilir. save dosya-adı değişken1 değişken2 … load dosya-adı değişken1 değişken2 …

Vektör ve matris Satır vektör a = [1 2 3] a = 1 2 3 Sütün vector b = [1;2;3] b = 1 2 3

' operatörü transpose için kullanılır . complex formda , a + i*b'

Page 9: Matlab Bolum1

9

(a+i*b')' ans = 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i (a+i*b').' ans = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i length fonksiyonu vektördeki elaman sayısını verir length(a) ans = 3 . operatörü MATLAB da çok önemlidir.

Örnek: a*a işlemi boyut hatası verir, A vektörünün elemanlarının karşılıklı çarpımını elde etmek için, a.*a ans = 1 4 9 ayni işlem aşağıdaki gibi yapılabilir a.^2 ans = 1 4 9 Benzer biçimde bölme işlemi a.\b' ans = 1 1 1 a vectörü sütün olarak değiştirilebilir, a = a' a = 1 2 3 çarpma işlemi c = a'*b c = 5

c = a*b' c = 1 2 3 2 4 6

Page 10: Matlab Bolum1

10

3 6 9 İki vectörün vektörel çarpımı, b = [-2 1 2];

cp = cross(a,b) cp = 1 -8 5

Matris

MATLAB da matrisler aşağıdaki gibi tanımlanır, Boş matris M=[ ] A=[1 1 3;4 0 6;2,5,-1]

A =

1 1 3

4 0 6

2 5 -1

B=[1 0 -1 ; 0 -1 1 ;-1 1 0]

B =

1 0 -1

0 -1 1

-1 1 0

İki matrisin çarpımı,

C=A*B

C =

-2 2 0

-2 6 -4

3 -6 3

Page 11: Matlab Bolum1

11

transpose si A'

ans =

1 4 2

1 0 5

3 6 -1

matrisin karesi D=B^2

D =

2 -1 -1

-1 2 -1

-1 -1 2

DD=B.^2 DD =

1 0 1

0 1 1

1 1 0

matrisin determinantı

det(A) ans= 46 matrisin inversi inv(A)

Page 12: Matlab Bolum1

12

ans =

-0.6522 0.3478 0.1304

0.3478 -0.1522 0.1304

0.4348 -0.0652 -0.0870 matrisin rank rank(D) ans = 2 Bir matrisin özdeğer ve özvektörü, [P,LAMDA]=eig(D) P = 0.80341805013121 0.14555446880815 0.57735026918963 -0.27565515744340 -0.76855767567667 0.57735026918963 -0.52776289268782 0.62300320686851 0.57735026918963 LAMDA = 3 0 0 0 3 0 0 0 0

Matrislerle ilgili bazı özellikler: A = [1 2 3;4 5 6;7 8 10] A = 1 2 3 4 5 6 7 8 10 A matrisinden alt matrix elde edilebilir,örneğin 1 ve 3 satırlar ile 1 ile 2 sütünlar B = A([1 3], [1 2]) B = 1 2 7 8 A matrixinden 1 ve 3 üncü satırları yer değiştirebiliriz. C = A([3 2 1],:)

Page 13: Matlab Bolum1

13

C = 7 8 10 4 5 6 1 2 3

: operatörü sutünün veya satırın tüm elemanları anlamında kullanılır. A(:) ans = 1 4 7 2 5 8 3 6 10 Herhangibir satır(sütün) silmek için, A(:, 2) = [] A = 1 3 4 6 7 10 2. inci sütün silindi. Vektörleri kullanarak matrix yaratılabilir, A = [A(:,1) [2 5 8]' A(:,2)] A = 1 2 3 4 5 6 7 8 10 yeni bir matrix yaratalım, A = [-1 2 3;0 5 1] A = -1 2 3 0 5 1 A > 1 ans = 0 1 1 0 1 0 A(A > 1) ans = 2 5 3 A = [1 2 3; 3 2 1] ;

Page 14: Matlab Bolum1

14

A.*A ans = 1 4 9 9 4 1 A*A ¨??? Error using ==> * Inner matrix dimensions must agree. Diag fonksiyonu bir matrixin diyagonalı yaratır, d = [1 2 3]; D = diag(d) D = 1 0 0 0 2 0 0 0 3 Tersine bir matrixte kullanılırsa matrixin diagonalını verir, d = diag(D) d = 1 2 3 Ayni boyuttaki matrisler bir değişkende saklanabilir, a={[1 2; 3 4],[6 7; 8 9]} a = [2x2 double] [2x2 double] a{1} ans = 1 2

3 4 m tane matrisin lineer kombinasyonunu bulan fonksiyonu yazalım, function M = linkomb(v,A) % m tane ayni boyutta matrisin Linear kombinasyonu % katsayılar v = {v1,v2,…,vm} % A = {A1,A2,...,Am} m = length(v); [k, l] = size(A{1}); M = zeros(k, l); for i = 1:m M = M + v{i}*A{i};

Page 15: Matlab Bolum1

15

end v={2,3} v = [2] [3] linkomb(v,a) ans = 20 25 30 35

Bazı özel Matrisler ones(4,3) ans = 1 1 1 1 1 1 1 1 1 1 1 1 zeros(2,4) ans = 0 0 0 0 0 0 0 0 eye(4) ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 eye(5,3) ans = 1 0 0 0 1 0 0 0 1

Page 16: Matlab Bolum1

16

0 0 0 0 0 0 eye(4,5) ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 Hilbert matrisi H=hilb(4) ans = 8 1 6

3 5 7 4 9 2

H =

1.0000 0.5000 0.3333 0.2500

0.5000 0.3333 0.2500 0.2000

0.3333 0.2500 0.2000 0.1667

0.2500 0.2000 0.1667 0.1429

rational formda istenirse, rats(H) ans = 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 1/4 1/5 1/6 1/7 Diagonal matris elde etmek için d=1:5; m=diag(d)

Page 17: Matlab Bolum1

17

m = 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5 s1=diag(d,1)

s1 = 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 4 0 0 0 0 0 0 5 0 0 0 0 0 0 s2=diag(d,-1) s2 = 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0

0 0 0 4 0 0 0 0 0 0 5 0 rand(n,m) uniform dağılımdan nxm matris randn(n,m) normal dağılımdan nxm matris triu(a) üst üçgen matris

tril(a) alt üçgen matris

M-Files Program codlarını içeren file m-file adı verilir. Pull-down menu ile File-new seçeneği ile yaratılır. Script files veya function files olmak üzere 2 biçimde yazılabilir.Script file input arguman ve output arguman içermez.

Page 18: Matlab Bolum1

18

Örnek script file,

% Script file x = pi/100:pi/100:10*pi; y = sin(x)./x; plot(x,y) grid ornek1 olarak save ediniz. Yukarıdaki ornek programda % ile başlayan satır açıklama satırı. Ikinci satırda x değişkeni [pi/100,10*pi] kapalı aralığında pi/100 artımla yaratılıyor. Üçüncü satırda x değerleri için hesaplanan sin(x)/x değerleri y değişkeninde saklanıyor. Plot(x,y) ile grafik çiziliyor. Grid grafik ekranın grid oluşturlması için kullanılmıştır. Command Window da ornek1 yazılarak enter yapılırsa script file run edilmiş olur.

Function file için bir vectoru büyükten küçüğe sıralayan programı yazalım yazalım. function [b, j] = sirala(a) % Function a vectorunu büyükten küçüğe sıralar % b argumanı sıralanmış vector % j sıralama sonrası elemanların index değerlerini verir. [b ,j] = sort(-a); b = -b; Command window da, a = [pi –10 35 0.15]; [b, j] =sirala(a) b = 35.0000 3.1416 0.1500 -10.0000 j = 3 1 4 2 Bazı zamanlarda çalışma anında kullanılmak üzere function tanımlamak gerekebilir.Bu durumda inline fonction kullanılır. f = inline('sqrt(x.^2+y.^2)','x','y') f = Inline function: f(x,y) = sqrt(x.^2+y.^2) herhangibir değeri hesaplamak için f(3,4) ans = 5 yukarıda yazılan inline function matrix içinde kullanılabilir. Örneğin: A = [1 2;3 4] A = 1 2 3 4 and

Page 19: Matlab Bolum1

19

B = ones(2) B = 1 1 1 1 C = f(A, B) C = 1.4142 2.2361 3.1623 4.1231 Karekterlerden oluşan string bilgiler aşağıdaki gibi tanımlanabilir s = ' MATLAB' s = MATLAB Döngüler,Kontrol MATLAB programlamada aşağıdaki düngü ve kontrollar kullanılabilir. for loops while loops if-else-end switch-case for loops for k = dizi deyimler end for ve end arasındaki deyimler dizide belirtilen her eleman için icra edilir.Örneğin n = 0, 1, …, 10 için n/10 noktalarında sin değerlerini hesap edelim. for n=0:10 x(n+1) = sin(pi*n/10); end x x = Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000 for döngüsü iç içe kullanılabilir, H = zeros(5); for k=1:5 for l=1:5 H(k,l) = 1/(k+l-1); end end

Page 20: Matlab Bolum1

20

H H = 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 Bulunan matrix Hilbert matrix olarak adlandırılır. 10x10 boyutunda A = [akl], matrixini, akl = sin(k)cos(l) olacak şekilde elde etmek isteyelim, A = zeros(10); for k=1:10 for l=1:10 A(k,l) = sin(k)*cos(l); end end yukarıdaki program daha kısa yazılabilir k = 1:10; A = sin(k)'*cos(k); Bu işlem MATLAB vectorization olarak adlandırılır.

While loops Bu döngünün yapısı, While koşul Deyimler End Döngünün tekrar sayısını bilmiyorsa kullanılır.Bunun için aşağıdaki örneğe bakalım, q = pi; while q > 0.01 q = q/2; end q q = 0.0061 if deyimi

Bir koşula bağlı programın akışını değiştirmek için kullanılır, If koşul

Page 21: Matlab Bolum1

21

deyimler end Bir başka kullanım biçimi , If koşul Deyimler (Eğer koşul doğruysa) Else Deyimler (Eğer koşul yanlışsa) End İç içe if lerde kullanılabilir, if koşu l 1 Deyimler (Eğer koşul 1 doğruysa) elseif koşu l 2 Deyimler (Eğer koşul 2 doğruysa) elseif … . . . else Deyimler (Eğer tüm koşullar yanlışsa) End İf deyiminde aşağıdaki operatörler kullanılabilir, Operator < <= > >= == Eşit ~= Eşit değil

Mantıksal operatörler, | And & Or ~ Not Örnek : Sayısal analizde önemli yeri olan Chebyshev polinomlarını hesap edelim, Tn(x), n = 0, 1, …

Page 22: Matlab Bolum1

22

Tn(x) = 2xTn – 1(x) – Tn – 2(x), n = 2, 3, … , T0(x) = 1, T1(x) = x. function T = ChebT(n) % Coefficients T of the nth Chebyshev polynomial of the first kind. % They are stored in the descending order of powers. t0 = 1; t1 = [1 0]; if n == 0 T = t0; elseif n == 1; T = t1; else for k=2:n T = [2*t1 0] - [0 0 t0]; t0 = t1; t1 = T; end end Kübik Chebyshev polinomlarının katsayıları, coeff = ChebT(3) coeff = 4 0 -3 0 T3(x) = 4x3 – 3x.

Switch-case Genel yapısı, switch deyim (sayısal veya string) case değer1 (Eğer deyimin değeri değer1 ise) komutlar case değer2 (Eğer deyimin değeri değer2 ise) komutlar . . . otherwise

komutlar end Örnek: Rastgele üretilen integer sayılar {1, 2, … , 10} kümesi içinde , eğer x=1 veya x=2 ise %20 olasılık,x=3 veya x=4,x=5 ise %30 olasılık, diğer durumlarda %50 olasılık mesajı veren programı yazınız.

Page 23: Matlab Bolum1

23

% Script M file (olasılık) x = ceil(10*rand); switch x case {1,2} disp('Olasılık = 20%'); case {3,4,5} disp('Olasılık = 30%'); otherwise disp('Olasılık = 50%'); end Programda kullanılam MATLAB fonksiyonlar rand – uniform dağılımdan rastgele sayı üretir (0, 1) ceil – round towards plus infinity infinity (see Section 2.5 for more details) disp – string/sayısal bilgileri ekranda görüntüler Yukarıdaki programı Command windowda çalıstıralım for k = 1:10 olasılık end olasılık = 50% Probability = 30% Probability = 50% Probability = 50% Probability = 50% Probability = 30% Probability = 20% Probability = 50% Probability = 30% Probability = 50% Örnek: a = [1 1 3 4 1] a = 1 1 3 4 1 i = (a == 1) i = 1 1 0 0 1 Değeri 1 olan elemanlar başka bir diziye atanabilir b = a(i) b = 1 1 1

Page 24: Matlab Bolum1

24

Başka bir biçimdede kullanılabilir ind = find(a == 1) ind = 1 2 5 b = a(ind) b = 1 1 1

Örnek:

x = randn(1,7) x = -0.4326 -1.6656 0.1253 0.2877 -1.1465 1.1909 1.1892 ind = (x >= 1) | (x < -0.2) ind = 1 1 0 0 1 1 1 y = x(ind) y = -0.4326 -1.6656 -1.1465 1.1909 1.1892 Dizide elemanların varlığını sorgulayan isempty fonksiyonu için örnek verelim, isempty(y) ans = 0 y dizisi boş olmadığı içi 0 döner. isempty([ ]) ans = 1 Boş dizi içinse 1 döner.

Örnek:Bir polinomun türev katsayılarını veren fonksiyonu yazalım, function dp = derp(p) % dp türev polinomu % p verilen polinom n = length(p) - 1; p = p(:)'; % p yi satır haline getirir dp = p(1:n).*(n:-1:1); % katsayıları hesapla k = find(dp ~= 0); if ~isempty(k)

Page 25: Matlab Bolum1

25

dp = dp(k(1):end); % sıfırları sil else dp = 0; end p(x) = x3 + 2x2 + 4 polinomu için yukarıdaki fonksiyon kullanılırsa dp = derp([1 2 0 4]) dp = 3 4 0

MATLAB Grafik Matlab birçok grafik fonksiyona sahiptir.İki ve üç boyutlu grafikler kolaylıkla çizilebilir. F(x)= x/(1+x^2) fonksiyonunu çizelim.

% Script file % Fonksiyon y = x/(1+x^2). for n=1:2:5 n10 = 10*n; x = linspace(-2,2,n10); y = x./(1+x.^2); plot(x,y,'r') title(sprintf('Graph %g. Plot based upon n = %g points.' , (n+1)/2, n10)) axis([-2,2,-.8,.8]) xlabel('x')

ylabel('y') grid pause(3) end Yukarıdaki programı incelersek, linspace(a, b, n) : [a,b] aralığını n noktaya bölerek yaratır 'r' : renk kodu (red) title : grafik üzerine açıklayıcı bilgilerin yazılmasını sağlar. sprintf : string ve sayısal bilgilerin birlikte oluşturulmasını sağlar.

Page 26: Matlab Bolum1

26

%g : integer sayılar için format xlabel,ylabel : Exsenlerin etiketlerini yazmak için axis : Eksenleri düzenler pause : grafik ekranı bekletmek için kullanılır Ayni grafiği tek bir grafik ekranda çizebiliriz.Bu amaçla subplot kullanalım.

% Script file % y = x/(1+x^2)

k = 0; for n=1:3:10 n10 = 10*n; x = linspace(-2,2,n10); y = x./(1+x.^2); k = k+1; subplot(2,2,k) % 2x2 4 grafik çizilecek, k=grafiğin indexi plot(x,y,'r') title(sprintf('Grafik %g. n = %g ' , k, n10)) xlabel('x')

ylabel('y') axis([-2,2,-.8,.8]) grid pause(3); end

Page 27: Matlab Bolum1

27

Aşağıdaki iki elipsi çizelim,

% Script file % x(t) = 3 + 6cos(t), y(t) = -2 + 9sin(t) % x(t) = 7 + 2cos(t), y(t) = 8 + 6sin(t). t = 0:pi/100:2*pi; x1 = 3 + 6*cos(t); y1 = -2 + 9*sin(t); x2 = 7 + 2*cos(t); y2 = 8 + 6*sin(t); h1 = plot(x1,y1,'r',x2,y2,'b'); set(h1,'LineWidth',1.25) axis('square') xlabel('x')

h = get(gca,'xlabel'); set(h,'FontSize',12) set(gca,'XTick',-4:10) ylabel('y') h = get(gca,'ylabel'); set(h,'FontSize',12) set(gca,'YTick',-12:2:14) title(' (x-3)^2/36+(y+2)^2/81 = 1 ve (x-7)^2/4+(y-8)^2/36 =1.')

Page 28: Matlab Bolum1

28

h = get(gca,'Title'); set(h,'FontSize',12) grid

Grafik çiziminde kullanılacak renk kodları aşağıdadır, y yellow m magenta c cyan r red g green b blue w white k black Çizilen grafiklerin içleri doldurulabilir Bir örnekle görelim, n = -6:6; x = sin(n*pi/6); y = cos(n*pi/6); fill(x, y, 'r') axis('square') title(' x = sin(n*pi/6) , y = cos(n*pi/6) ') text(-0.45,0,' MATLAB')

Page 29: Matlab Bolum1

29

Polar koordinatlarda çizim için bir örnek verelim, theta=0:pi/60:2*pi;r=2*(1-cos(theta));polar(theta,r);axis square

Page 30: Matlab Bolum1

30

Contour’ ların çizimi Contour’ ların çizimi Contour’ ların çizimi Contour’ ların çizimi

Contour’ ların çizimi sık karşılaşılan bir problemdir. Örnek olarak,

f(x,y) = 2 - [(x-1)2 + 4(y-1)2 + 2xy] fonksiyonunu alalım,

function m=pr(x,y)

m=zeros(0,length(x))

for k=length(y):-1:1

m=[m;2-((x-1).^2+4*(y(k)-1)^2+2*x*y(k))]

end

x=-2:.1:2; y=x; m=pr(x,y); cs=contour(x,y,flipud(m),[-15 -10 -5 -2 0 .5]); clabel(cs) xlabel('x') ylabel('y') title('Contour Plot ')

Page 31: Matlab Bolum1

31

3 Boyutlu grafikler plot3 fonksiyonu kullanarak % Script file % Curve r(t) = < t*cos(t), t*sin(t), t >. t = -10*pi:pi/100:10*pi; x = t.*cos(t); y = t.*sin(t); h = plot3(x,y,t); set(h,'LineWidth',1.25) title(' u(t) = < t*cos(t), t*sin(t), t >') h = get(gca,'Title'); set(h,'FontSize',12) xlabel('x') h = get(gca,'xlabel'); set(h,'FontSize',12) ylabel('y') h = get(gca,'ylabel'); set(h,'FontSize',12) zlabel('z') h = get(gca,'zlabel'); set(h,'FontSize',12) grid

Page 32: Matlab Bolum1

32

mesgrid fonksiyonu kullanılarak 3 boyutlu koordinatlar yaratılabilir. x = [0 1 2]; y = [10 12 14]; [xi, yi] = meshgrid(x,y) xi = 0 1 2 0 1 2 0 1 2 yi = 10 10 10 12 12 12 14 14 14 örnek: x = -1:0.05:1; y = x;

[xi, yi] = meshgrid(x,y); zi = yi.^2 - xi.^2; mesh(xi, yi, zi) axis off

örnek: % Script file % = y^2 - x^2 x = -1:.05:1; y = x;

Page 33: Matlab Bolum1

33

[xi,yi] = meshgrid(x,y); zi = yi.^2 - xi.^2; surfc(xi,yi,zi) colormap copper shading interp view([25,15,20]) grid off title('Hyperbolic paraboloid z = y^2 – x^2') h = get(gca,'Title'); set(h,'FontSize',12) xlabel('x') h = get(gca,'xlabel'); set(h,'FontSize',12) ylabel('y') h = get(gca,'ylabel'); set(h,'FontSize',12) zlabel('z') h = get(gca,'zlabel'); set(h,'FontSize',12) pause(5) figure contourf(zi), hold on, shading flat [c,h] = contour(zi,'k-'); clabel(c,h) title('The level curves of z = y^2 - x^2.') h = get(gca,'Title'); set(h,'FontSize',12) xlabel('x') h = get(gca,'xlabel'); set(h,'FontSize',12) ylabel('y') h = get(gca,'ylabel'); set(h,'FontSize',12)

Page 34: Matlab Bolum1

34

Bazı özel şekiller için hazır fonksiyonlar vardır, Küre:

Page 35: Matlab Bolum1

35

[x,y,z]=sphere(100) % 100 noktayla çiz surf(x,y,z)

silindir: [x,y,z] =cylinder(2) % r=2 surf(x,y,z)

Page 36: Matlab Bolum1

36

koni: [x,y,z] = cylinder([0 1]) surf(x,y,z)

Page 37: Matlab Bolum1

37

Elipsoid: [x,y,z]=ellipsoid(xc,yc,zc,xr,yr,zr)

1)()()(

2

2

2

2

2

2

=−

+−

+−

zr

zcz

yr

ycy

xr

xcx

[x,y,z]=ellipsoid(2,3,4,5,6,8) surf(x,y,z) lorenz: sistemde tanımlıdır ve Lorenz chaotic attractor ‘ ünü verir.

Page 38: Matlab Bolum1

38

spharm2 Sistemde tanımlı 3-boyutlu demo çizimdir. Matlab da kullanılan renk özellikleri aşağıda listelenmiştir, hsv - hue-saturation-value color map hot - black-red-yellow-white color map gray - linear gray-scale color map bone - gray-scale with tinge of blue color map copper - linear copper-tone color map pink - pastel shades of pink color map white - all white color map flag - alternating red, white, blue, and black color map lines - color map with the line colors

colorcube - enhanced color-cube color map vga - windows colormap for 16 colors jet - variant of HSV prism - prism color map cool - shades of cyan and magenta color map autumn - shades of red and yellow color map spring - shades of magenta and yellow color map winter - shades of blue and green color map summer - shades of green and yellow color map örnek:

Page 39: Matlab Bolum1

39

colormap(spring)

Lineer Denklem Sistemlerinin Çözümleri Ax = b şeklindeki lineer denklem sistemlerinde,A mxn boyutunda bir matrix olmak üzere

1. m = n A = [1 2 3;4 5 6;7 8 10] A = 1 2 3 4 5 6 7 8 10 b = ones(3,1); x = A\b x = -1.0000 1.0000 0.0000

bu çözümde sayısal yuvarlatma hatalar bulunabilirı, r = b - A*x r = 1.0e-015 * 0.1110 0.6661 0.2220

2. m > n

A = [2 –1; 1 10; 1 2]; x = A\b x = 0.5849 0.0491 r = b - A*x r = -0.1208 -0.0755 0.3170 3. m < n A = [1 2 3; 4 5 6]; b = ones(2,1); x = A\b x = -0.5000

Page 40: Matlab Bolum1

40

0 0.5000 Bir matrixin inversi inv fonksiyonu kullanılarak bulunabilir Örnek: A = [1 2 3;4 5 6;7 8 10] A = 1 2 3 4 5 6 7 8 10 Then B = inv(A) B = -0.6667 -1.3333 1.0000 -0.6667 3.6667 -2.0000 1.0 -2.0000 1.0000 A = pascal(3) A = 1 1 1 1 2 3 1 3 6 Cholesky üçgenleştirmesi, S = chol(A) S = 1 1 1 0 1 2 0 0 1 A = S'*S. det(A) ans = -360 2-norm (Euclidean norm) norm. a = -2:2 a = -2 -1 0 1 2 twon = norm(a) 17 twon = 3.1623 birim vektör unitv = a /twon unitv = -0.6325 -0.3162 0 0.3162 0.6325 a ve b vektörleri arasındaki açı hesaplanabilir, c = arccos(a.b/||a|| ||b||),

Page 41: Matlab Bolum1

41

Polinomlar 3 üncü derece polinomun kökleri, p(x) = 3x3 + 2x2 - 1 p = [3 2 0 1]; format long r = roots(p) r = -1.00000000000000 0.16666666666667 + 0.55277079839257i 0.16666666666667 - 0.55277079839257i bulunan köklerin değerlerini bulmak için, err = polyval(p, r) err = 1.0e-014 * 0.22204460492503 0 + 0.01110223024625i 0 - 0.01110223024625i Bir fonksiyonu 0 yapan degğeri bulmak, f(x) = cos(x) – x. fonksiyonunu alalım, function y = f1(x) % A univariate function with a simple zero. y = cos(x) - x;

r = fzero('f1', 0.5) r = 0.73908513321516 fzero fonksiyonunda ikinci argüman başlangıç değeri. Feval fonksiyonu kullanarak fonksiyon değerini bulabiliriz. err = feval('f1', r) err = 0 istenilen bir aralıkta kök bulmak için, r = fzero('f1', [0 1]) r = 0.73908513321516

fzero('f1', [1 2]) ¨??? Error using ==> fzero The function values at the interval endpoints must differ in sign.

Page 42: Matlab Bolum1

42

Kök bulmada yaklaşım hassaslığı verilebilir rt = fzero('f1', .5, 1e-3) rt = 0.73886572291538 = istenirse 4 üncü arguman 1 yazılarak iterasyon adımları görülebilir. format short rt = fzero('f1', .5, eps, 1) Func evals x f(x) Procedure 1 0.5 0.377583 initial 2 0.485858 0.398417 search 3 0.514142 0.356573 search 4 0.48 0.406995 search 5 0.52 0.347819 search 6 0.471716 0.419074 search 7 0.528284 0.335389 search 8 0.46 0.436052 search 9 0.54 0.317709 search 10 0.443431 0.459853 search 11 0.556569 0.292504 search 12 0.42 0.493089 search 13 0.58 0.256463 search 14 0.386863 0.539234 search 15 0.613137 0.20471 search 16 0.34 0.602755 search 17 0.66 0.129992 search 18 0.273726 0.689045 search 5 19 0.726274 0.0213797 search 20 0.18 0.803844 search 21 0.82 -0.137779 search Looking for a zero in the interval [0.18, 0.82] 22 0.726355 0.0212455 interpolation 23 0.738866 0.00036719 interpolation 24 0.739085 -6.04288e-008 interpolation 25 0.739085 2.92788e-012 interpolation 26 0.739085 0 interpolation rt = 0.7391

Interpolasyon Intepolasyon için genel form yi = interp1(x, y, xi, method) şeklindedir x ve y verilen değerler,yi ise interpolasyon fonksiyonundan hesaplanan değerler (yi = f(xi)).

Metotlar ise, 'nearest' : Local parçasal 'linear' : Linear . 'spline' : spline interpolasyon

Page 43: Matlab Bolum1

43

örnek : (xk, yk) = (k_/5, sin(2xk)), k = 0, 1, … , 5, değerlerini üretelim, x = 0:pi/5:pi; y = sin(2.*x); bulunan değerleri kullanarak interpolasyon yaparsak ,

xi = 0:pi/100:pi; yi = interp1(x, y, xi, 'nearest'); plot(x, y, 'o', xi, yi), title('Piecewise interpolasyon y =sin(2x)')

yi = interp1(x, y, xi, 'cubic'); plot(x, y, 'o', xi, yi), title('Cubic interpolant of y = sin(2x)')

Page 44: Matlab Bolum1

44

spline fonksiyonu kullanılarakta interpolasyon yapılabilir, x = -3:3; y = [-1 -1 -1 0 1 1 1]; t = -3:.01:3; p = pchip(x,y,t); s = spline(x,y,t); plot(x,y,'o',t,p,'-',t,s,'-.') legend('data','pchip','spline',4)

Page 45: Matlab Bolum1

45

İki boyutlu interpolasyon {xk, yl} noktaları için , 1 ≤ k≤ m, 1 ≤ l ≤ n aralığında zkl, verildiğinde z = f(x, y) interpolasyon denklemi zi = interp2(x, y, z, xi, yi, 'method') MATLAB fonksiyonu ile bulunabilir metotlar : 'nearest' - nearest neighbor interpolation 'linear' - bilinear interpolation 'cubic' - bicubic interpolation 'spline' - spline interpolation Örnek: z = sin(x2 + y2) fonksiyonundan –1≤ x ≤ 1, -1 ≤ y ≤ 1 aralığında data üreterek 'linear' ve the 'cubic' metotlaral interpolasyon yapalım, [x, y] = meshgrid(-1:.25:1); z = sin(x.^2 + y.^2); [xi, yi] = meshgrid(-1:.05:1); zi = interp2(x, y, z, xi, yi, 'linear'); surf(xi, yi, zi), title('Bilinear interpolasyon sin(x^2 + y^2)')

Page 46: Matlab Bolum1

46

cubic interpolasyon için, zi = interp2(x, y, z, xi, yi, 'cubic');

İstatistik uygulamalar

İstatistikte kullanılan dağılım fonksiyonları ve özellikleri üzerinde duralım,

Binomial dağılım: Binom dağılımının olasılık fonksiyonu,

q=1-p µ= np σ2= npq

örnek: n=25,p=0.2,

Page 47: Matlab Bolum1

47

p(x<=3) = ? p1=binocdf(3,25,0.2) baska bir biçimde ayni sonuç bulunabilir, p2=sum(binopdf(0:3,25,0.2)) Örnek: N=6,p=0.3 ve p=0.7 için olasılık yoğunluk fonksiyonunu çizelim, x=0:6 pdf1=binopdf(x,6,0.3) pdf2=binopdf(x,6,0.7) subplot(1,2,1) bar(x,pdf1,1,’w’) title(‘n=6 , p=0.3’) xlabel(‘x’) ylabel(‘f(x)’) axis square subplot(1,2,2) bar(x,pdf2,1,’w’) title(‘n=6 , p=0.7’) xlabel(‘x’) ylabel(‘f(x)’) axis square

Poisson dağılımı

Page 48: Matlab Bolum1

48

µ= λ σ2= λ Dağılımın grafiğini λ=5 için çizelim, x = 0:50; y = poisspdf(x,5); plot(x,y,'+')

Örnek: λ=0.25 için P(x>=2) olasılığını hesaplayalım, P(x>=2)=1-{p(x=0)+p(x=1)} P=1-poisscdf(1,0.25) P = 0.0265

Page 49: Matlab Bolum1

49

Geometrik dağılım

x

pqpxfy == );( x=0,1,...

q=1-x

p

1=µ

2

2 1

p

p−=σ

Örnek: x=0:25 y=geopdf(x,0.04) c=geocdf(x,0.04) plot(x,y) hold

stairs(x,c)

Hipergeometric dağılım

Page 50: Matlab Bolum1

50

N

nM=µ

)1(

))((2

2

−−=

NN

nNMNnMσ

Örnek: x=0:10 y=hygepdf(x,1000,50,20) c=hygecdf(x,1000,50,20) plot(x,y) hold stairs(x,c)

Page 51: Matlab Bolum1

51

Uniform dağılım Bu dağılımın olasılık yoğunluk fonksiyonu,

2

ba +=µ

( )12

2

2 ab −=σ

Örnek: x=-1:0.1:11 pdf=unifpdf(x,0,10) cdf=unifcdf(x,0,10) subplot(1,2,1), plot(x,pdf) title(‘PDF’) xlabel(‘x’), ylabel(‘f(x)’) axis([-1 11 0 0.2]) subplot(1,2,2), plot(x,cdf) title(‘CDF’) xlabel(‘x’), ylabel(‘f(x)’) axis([-1 11 0 1.2])

Page 52: Matlab Bolum1

52

Normal Dağılım

Normal dağılım olasılık yoğunluk fonksiyonu,

µ =ortalama σ = standart sapma. Örnek: µ =5 σ = 2 s=[8 12] mu=10 sigma=2 p=normspec(s,mu,sigma)

Page 53: Matlab Bolum1

53

Student’s dağılımı Normal dağılıma benzer, küçük boyuttaki öreneklemlerde kullanılan bir dağılımdır, Dağılım fonksiyonu,

2

12

1

11

2

2

1

);(+

+

Γ

ν

νπν

ν

ν

x

xf

MATLAP pdf fonksiyonu tpdf(x,serbestlik derecesi) Örnek: Normal dağılım ve t dağılımını ayni grafikte görelim, x=-5:0.1:5 y=tpdf(x,5) z=normpdf(x,0,1) plot(x,y,x,z)

Page 54: Matlab Bolum1

54

Üstel dağılım Üstel dağılım olasılık yoğunluk fonksiyonu, λ > 0, parameter olmak üzere üstel dağılım olasılık yoğunluk fonksiyonu,

f(x) = λe-λx λ>0 , x≥ 0

λµ

1=

λσ

12 =

pdf fonksiyonunu çizelim, y1=exppdf(x,1/1) y2=exppdf(x,1/2) plot(x,y1,x,y2) title('ustel dagilim')

Page 55: Matlab Bolum1

55

xlabel('x') ylabel('f(x)')

Ornek: λ=1/12 p(x<=10)=? P=expcdf(x,1/λ) P = expcdf(10,12) P = 0.5654 p değeri veridiğinde x değerini bulmak için, x=expinv( 0.5654,12) x = 10.0000

Gamma dağılımı

Page 56: Matlab Bolum1

56

)(

)(),;(

1

t

xetxf

tx

Γ=

−λλλ

λ

; x≥0

dyyetty 1

0

)( −∞

∫=Γ

λµ

t=

2

2 1

λσ =

Gamma dağılımı MATLAB fonksiyonu gampdf(x,t,1/λ) Örnek: λ=t=1, λ=t=2, λ=t=3 için fonksiyonu çizelim, x=0:0.1:3 %farklı λ değerleri için gama fonksiyonu y1=gampdf(x,1,1/1) y2=gampdf(x,2,1/2) y3=gampdf(x,3,1/3) plot(x,y1,x,y2,x,y3) title('gamma dagilimi') xlabel('x') ylabel('f(x)')

Page 57: Matlab Bolum1

57

Chi-Kare dağılımı

x

exxf 2

112/

2/

2

1

)2/(

1);(

−−

Γ= ν

ν

νν ; x≥2

dtetata −

∞−

∫=Γ0

1)(

νµ =

νσ 22 = örnek: x= 0:0.2:15

Page 58: Matlab Bolum1

58

y1=chi2pdf(x,4) y2=chi2pdf(x,6) plot(x,y1,x,y2)

F dağılımı

22

1121

/

/),(

νχ

νχνν =F

χ 1 , χ 2 : Chi-Kare dağılımı ν1, ν1 : serbestlik derecesi

( )22

2

−=

ν

νµ

)4(

)2(2

21

21

−+=

νν

ννσ

Page 59: Matlab Bolum1

59

Örnek: x= 0:0.01:10 y1=fpdf(x,5,3) y2=fcdf(x,5,3) plot(x,y1,x,y2)

Weibull dağılımı Mühendislik uygulamalarında çok kullanılan bir dağılımdır.α>0, β>0 , λ=1/α olmak üzere, olasılık yoğunluk fonksiyonu,

β

α

νβ

α

ν

α

ββαν

−−

=

x

ex

xf

1

),,;( ; x>ν

µ=ν+αΓ(1/β+1)

[ ]{ }22 )1/1()1/2( +Γ−+Γ= ββασ

Page 60: Matlab Bolum1

60

Weibull dağılımı MATLAB fonksiyonu weibpdf(x.α,β), kümülatif dağılım fonksiyonu weibcdf(x.α,β) Örnek: x=0:0.1:3 %farklı α,β değerleri için Weibull fonksiyonu y1=weibpdf(x,1,2) y2=weibpdf(x,2,3) y3=weibpdf(x,3,4) plot(x,y1,x,y2,x,y3) title('weibull dagilimi') xlabel('x') ylabel('f(x)')

Beta dağılımı Çok esnek bir dağılımdır farklı parametrelerde çok farklı davranışlar gösterir.

11 )1(),(

1),;( −− −= βα

βαβα xx

Bxf ; 0<x<1,

Page 61: Matlab Bolum1

61

)(

)()()1(),( 1

1

0

1

βα

βαβα βα

ΓΓ=−= −−

∫ dxxxB

βα

αµ

+=

)1()( 2 +++=

βαβα

αβσ

Beta dağılımı MATLAB fonksiyonu betapdf(x.α,β), Kümülatif dağılım fonksiyonu betacdf(x.α,β) Örnek: (0,1) aralğında α=β=0.5 ve α=β=3 için pdf fonksiyonunu çizelim. x=0.01:0.01:0.99 %farklı değerler için beta fonksiyonu y1=betapdf(x,0.5,0.5) y2=betapdf(x,3,3) plot(x,y1,x,y2) title('beta dagilimi') xlabel('x') ylabel('f(x)')

Page 62: Matlab Bolum1

62

Multivariate Normal dağılım

Çok değişkenli normal dağılım fonksiyonu,

−∑−−∑

=Σ − )()(2

1exp

)2(

1),;( 1

2/12/µµ

πµ xxxf

T

d

d = boyut Σ = dxd covariance matrisi µ = dx1 sütün matris Örnek: Dağılım fonksiyonunu çizelim, mu=zeros(1,2) cov = [1 0.7; 0.7 1] [x,y]=meshgrid(-4:0.2:4,-4:0.2:4) X=[x(:),y(:)] [n,d]=size(X) % datalar merkizi yapiliyor X=X-ones(n,1)*mu a=(2*pi)^(d/2)*sqrt(det(cov)) arg=diag(X*inv(cov)*X') p=exp((-0.5)*arg)

Page 63: Matlab Bolum1

63

Z=p/a z=reshape(Z,size(x)) subplot(1,2,1) surf(x,y,z) subplot(1,2,2) pcolor(x,y,z)

Descriptive İstatistik

Descriptive istatistik, verilerin ortalama,standart sapma gibi özelliklerini ve dağılım biçimini değişik grafiklerle özetleyen bir istatistiktir.Bu istatistikte kullanılan MATLAB fonksiyonları örneklerle inceleyelim.

Page 64: Matlab Bolum1

64

N

xN

ii∑

== 1µ Aritmetik ortalama

N Nxxx ...21=µ Geometrik ortalama

∑=

ii

xn

111

µ Harmonic ortalama

median = Bir dağılımı %50 lik olasılıkla iki parçaya bölen nokta locate = [geomean(a) harmmean(a) mean(a) median(a) ] locate = 74.5421 73.8331 75.2500 75.0000 stats = [ mad(a) range(a) std(a)] stats = 8.1687 44.0000 10.3746 Standard sapma :

a=[3 5 7 8 9 11] a = 3 5 7 8 9 11 std(a) ans = 2.8577 Variance : var(a) ans = 8.1667

Covariance matris X = [1 1 2 3;7 8 9 7;1 3 2 1;10 9 11 9;2 2 1 1; 3 4 1 2] X =

Page 65: Matlab Bolum1

65

1 1 2 3 7 8 9 7 1 3 2 1 10 9 11 9 2 2 1 1 3 4 1 2 cov(X) ans = 13.6000 11.6000 15.6000 11.8000 11.6000 10.7000 13.6000 9.9000 15.6000 13.6000 19.8667 14.6667 11.8000 9.9000 14.6667 11.3667

Skewness Verilen dataların simetrikliğini ölçer. Skewness fonksiyonunun değeri 0 ise datalar simetriktir. x=normrnd(4,3,1000,1) skewness(x) ans = -0.0307 Normal dağılımdan üretilen dataların simetrik olduğu söylenebilir.

Kurtosis Dağılımın basıklığının bir ölçüsüdür. Normal dağılımda kurtosis değeri 3 ‘ dür. x=normrnd(4,3,1000,1) kurtosis(x) ans = 2.9957 x=weibrnd(3,0.6,1000,1) kurtosis(x) ans = 40.3481

quartiles,deciles, percentile Bir dağılımı eşit aralıklara bölen noktalardır. Örnek: 100 tane rassal sayı üreterek quartilleri bulunuz,(quartil : Dağılımı %25,%50,%75 bölen noktalardır) x=sort(rand(1,100)) q1=median(x(1:50)) q2=median(x) q3=median(x(51:100)) q1 =

Page 66: Matlab Bolum1

66

0.2942 q2 = 0.5296

q3 = 0.7934 quartiles,deciles ve percentiller prctile fonksiyonu ile bulunabilir, p = 100*(0:0.25:1); y = prctile(a,p); z = [p;y]

z = 0 25.0000 50.0000 75.0000 100.0000 53.0000 67.5000 75.0000 82.0000 97.0000

prctile(a,50) ans = 7.5000 prctile(a,25) ans = 5 prctile(a,75) ans = 9 prctile(a,1) ans = 3 prctile(a,100) ans = 11 Range : range(a) ans =

8 Histogram a=[68 84 75 82 68 90 62 88 76 93 73 79 88 73 60 93 71 59 85 75 61 65 75 87 74 62 95 78 63 72 66 78 82 75 94 77 69 74 68 60 96 78 89 61 75 95 60 79 83 71 79 62 67 97 78 85 76 65 71 75 65 80 73 57 88 78 62 76 53 74 86 67 73 81 72 63 76 75 85 77]

Page 67: Matlab Bolum1

67

subplot(1,2,1)

[n,x] = hist(a,10) bar(x,n,1) axis square title(‘frekans histogramı’) subplot(1,2,2) bar(x,n/140,1) axis square title(‘relative frekans histogramı’)

Örnek: a =[ 1 2 3; 4 5 6; 7 4 2] a=a' subplot(2,1,1) plot(a,'b*') axis([0.5,3.5,-1,9]) title('Sütün data') subplot(2,1,2) bar(mean(a),'r') hold on errorbar(mean(a),std(a),'k') title('Mean data')

Page 68: Matlab Bolum1

68

örnek: plot(a,'bo') axis([0.5,3.5,-1,9]) hold on plot(mean(a),'r-^') errorbar(mean(a),std(a),'g-')

Page 69: Matlab Bolum1

69

yukarıdaki dataları kullanarak normal dağılım parametrelerini tahmin edelim

mu=mean(a) v = std(a) xp=linspace(min(a),max(a)) yp=normpdf(xp,mu,v) [nu,x]=hist(a) h=x(2)-x(1) bar(x,nu/(80*h),1) hold on plot(xp,yp) title(‘yoğunluk histogramı’) hold off

dağılımın simetrikliği box plot yardımıyle görülebilir. boxplot(a)

Page 70: Matlab Bolum1

70

gruplanmış dataların istatistigi grpstats fonksiyonu ile bulunur. x=[12 34 56 78 45 56 77 88 99 12 33 45] ' y=['a' 'a' 'b' 'a' 'a' 'b' 'b' 'b' 'b' 'a' 'a' 'a' ]' grpstats(x,y,0.05) son arguman güven aralığı için alfa anlam seviyesi

Page 71: Matlab Bolum1

71

Pie Grafik Bir örnekle açıklayalım, x=[.19 .22 .41 .18]; pie(x) e = zeros(size(x)); h = pie(x, e); textObjs = findobj(h, 'Type', 'text'); oldStr = get(textObjs, {'String'}); val = get(textObjs, {'Extent'}); oldExt = cat(1, val{:}); Names = {'P1: '; 'P2: '; 'P3: '; 'P4: '}; newStr = strcat(Names, oldStr); set (textObjs, {'String'}, newStr)

farklı biçimlerde pie grafik çizilebilir, % alanlar X/sum(X) şeklinde hesaplanır.e vektöründe 1 e karşılık gelen değer pie grafikten dışarı çıkartılır.

x = [1 3 0.5 2.5 2]; e = [0 1 0 0 0]; pie(x,e)

Page 72: Matlab Bolum1

72

x = [1 3 0.5 2.5 2] explode = [0 1 0 0 0] pie3(x,explode) colormap hsv

Rassal Sayı üretme Similasyon problemlerinde istenilen bir dağılıma göre data elde etmek önemlidir.MATLAB fonksiyonlar yardımıyla bu işlemler yapılabilir, Örnek: [0,1] aralığında Uniform dağılımdan sayı üretelim,

Page 73: Matlab Bolum1

73

x=rand(1,1000) %ilk arguman satır , diğeri sütün sayısı [n,x]=hist(x,15) bar(x,n,1,'w') title('uniform dagilim histogram') xlabel('x') ylabel('frekans')

Binom dağılımından n=100,p=0.5, 1500 data üretelim, r=binornd(100,0.5,1500,1) [n,x]=hist(r,50) bar(x,n,1,'w')

Page 74: Matlab Bolum1

74

µ=0, σ=1 parametreli normal dağılımdan 1500 data üretelim, y=normrnd(0,1,1500,1) [n,x]=hist(y,50); bar(x,n,1,'w')

Page 75: Matlab Bolum1

75

Testler İstatistik hipotez testleri matlab fonksiyonlar kullanılarak yapılabilir. Örnek olarak t(Student) testini verelim,

Eğer )1,2/( −>

ntT

α ise H0 hipotezi red.

Kullanılacak matlab fonksiyon, [h,sig,ci] = ttest(x,m,alpha,tail)

x = veriler m = ortalama alpha = anlam seviyesi eğer tail=0 ise µ≠m, çift taraflı test eğer tail=1 ise µ>m, tek taraflı test eğer tail=-1 ise µ<m, tek taraflı test h=0 ise,H0 hipotezi Kabul h=1 ise,H0 hipotezi Red sig = güven aralığı ci = t değerini ve serbestlik derecesini verir. Sayısal örnek olarak, sistemde bulunan gas dataları içinde price1 için t testi uygulayalım, H0 : µ = 107 H1 : µ ≠ 107 α=0.05 load gas price1

Page 76: Matlab Bolum1

76

price1 = 119 117 115 116 112 121 115 122 116 118 109 112 119 112 117 113 114 109 109 118 [a,b,c,d]=ttest(price1,107,0.05,0) a = 1 b = 1.3698e-008 c = 113.3388 116.9612 d = tstat: 9.4182 df: 19 Ayni veriler için Z test uygulanırsa, H0 : µ = m H1: µ ≠ m µ=115 σ=0.04 [h,p,ci,z]=ztest(price1/100,1.15,0.04) h = 0

Page 77: Matlab Bolum1

77

p = 0.8668

ci = 1.1340 1.1690 z = 0.1677 İki örnek t test

serbestlik derecesi [h,sig,ci] = ttest2(x,m,alpha,tail) price1 ve price2 ye fark testti uygulayalım,

[h,sig,ci,stat]=ttest2(price1,price2) h = 1 sig = 0.0083 ci = -5.7845 -0.9155 stat = tstat: -2.7857 df: 38

Page 78: Matlab Bolum1

78

Normallik testi Verilerin normal dağılımlı olup olmadıkları test edilebilir, bu test için aşağıdaki matlab fonksiyonu kullanılır, [H,P,LSTAT,CV]=lillietest(x,alpha) H0 : Veriler normal dağılımlı H1 : Veriler normal dağılımlı değil Eğer H=0 ise H0 kabul Eğer H=1 ise H0 red

örnek: MATLAB da buluna gas verilerini kullanalım, load gas prices = [price1 price2] plot(prices)

boxplot(prices,1) set(gca,'XtickLabel',str2mat('ocak','subat'))

Page 79: Matlab Bolum1

79

Normallik testti uygulayalım, lillietest(price1) lillietest(price2) ans = 0 ans = 0

H0 hipotezi Kabul edilir.Veriler normal dağılımlıdır.

Quantile-Quantile plot İki datanın kümülatif dağılım fonksiyonlarının karşılaştırılması ile dataların ayni dağılıma sahip olup olmadıkları karşılaştırılır. x=normrnd(1,2,1000,1) y=weibrnd(2,0.7,1000,1) qqplot(x,y)

Page 80: Matlab Bolum1

80

görüldüğü gibi iki farklı dağılımdan geldikleri 45 derecelik doğru üzerinde olmamalarından anlaşılmaktadır.Parametreleri farklı ayni dağılımdan iki data serisi üretelim, x=normrnd(1,2,1000,1) y=normrnd(3,5,1000,1) qqplot(x,y)

Parametreleri farklı iki serinin ayni dağılımdan geldiği görüldü.

Page 81: Matlab Bolum1

81

Lineer Regresyon modelleri x bağımsız değişken , y bağımlı değişken olmak üzere y=a+bx lineer modelini bulabiliriz, x=[1 1 1 1 1 1; 3 5 7 8 9 11]' Birden fazla x değişken sayısı olması durumunda sütün olarak eklenir. y=[13 15 15 17 18 20]' [B,BINT,R,RINT,STATS] = REGRESS(y,x,0.05) a,b değerleri, B = 10.2490 0.8490 a,b değerlerinin güven aralığı BINT = 7.9639 12.5340 0.5494 1.1486 R=y-y(tahmin) R = 0.2041 0.5061 -1.1918 -0.0408 0.1102 0.4122 R nin güven aralığı, RINT = -1.1699 1.5781 -1.1829 2.1951 -1.8395 -0.5441 -2.0372 1.9555 -1.7975 2.0179 -0.9579 1.7824 STATS = 0.9393 61.8941 0.0014 Sırasıyla R2 belirlilik katsayısı,F değeri,anlam seviyesi.

Page 82: Matlab Bolum1

82

İki değişken arasındaki korelasyon katsayısı corrcoef fonksiyonu ile bulunur, a = 1 1 3 4 b= [1 2 2 3] b = 1 2 2 3 corrcoef(a,b) ans = 1.0000 0.8165 0.8165 1.0000 Kaynaklar

1. Computational Statistics Handbook with MATLAB, Wendy L.Martinez, Angel R.Martinez, CHAPMAN & HALL/CRC,2002

2. Statistics,Murray R.Spiegel,McGraww-Hill Book Company,1972 3. Regression Analysis,Frank A.Graybill,Hariharan K.Iyer,Duxbury Prss,1994 4. http://www.mathworks.com