Ana səhifə

Işareti Matlab’in komut prompt’unu gösterir ve bu işaret bulunduğu satır komut satırı olarak adlandırılır. Bu işaretin hemen yanında yanıp sönen I


Yüklə 485 Kb.
səhifə3/5
tarix26.06.2016
ölçüsü485 Kb.
1   2   3   4   5

MATRİSLER


Matlab’de matrisleri oluşturmanın üç temel yolu vardır:

1. Direkt olarak (köşeli parantez […] kullanma)

2. Utility fonksiyonlar kullanarak (eye, ones, zeros, rand, randn komutlarıyla)

3. Özel matrisler (pascal, hilbert vb fonksiyonlarla)


Utility fonksiyonlar kullanarak (rand, ones, zeros, eye komutlarıyla) matris oluşturma

a) rand fonksiyonunu kullanmak. Bazen sadece bir özelliği veya bir şeyi denemek ve durumunu gözlemek için rastgele sayılardan oluşmus bir matris oluşturabilirsiniz. İşte rand uniform olarak dağılmış rastgele sayılı matrisler üretir.
rand fonksiyonu için genel sözdizimi formatı:

F = a + (b-a)*rand(m,n)

şeklindedir. Burada F matrisi, a ile b sayıları arasında uniform olarak dağılmış rastgele sayılardan oluşur ve mxn, matris boyutunu belirler. Sadece rand(k) komutunun kullanımı ile kxk boyutunda 0 ile 1 arasında rastgele sayılı matris üretirsiniz. Diğer bir ifade ile rand(k) ile rand(k,k) aynı işleve sahiptir.


Örneğin a=-5 ile b=5 arasında yani -5 ile +5 arasında rasgele sayılı 2x4 (iki satır 4 sütunlu) bir matris üretmek istiyorsanız

» a = -5 + 10*rand(2,4)

a =

-0.5490 -0.3401 3.4622 -2.9735



4.3181 -0.8135 0.2515 1.7214

b) ones ve zeros fonksiyonlarını kullanmak. Bu fonksiyonlardan ones ile elemanları sadece 1’lerden oluşan, zeros ile elemanları sadece 0’lardan oluşan matrisler üretilir.
ones fonksiyonu için genel sözdizimi formatı:

F = k*ones(m,n) veya F = k*ones([m,n])

şeklindedir. Burada mxn matris boyutunu belirler. F matrisi, k=1 için elemanları sadece 1 olan vektör, k1 ve k0 için elemanları k olan mxn boyutunda bir matris gösterir. ones(t), tüm elemanları 1 olan boyutu txt olan kare matris üretir.


zeros fonksiyonu için genel sözdizimi formatı:

F = zeros(m,n) veya F = zeros([m,n])

şeklindedir. Burada mxn matris boyutunu belirler ve F, elemanları sadece 0 olan mxn boyutunda bir matris gösterir. ones(t), tüm elemanları 1 olan boyutu txt olan kare matris üretir. zeros(t), tüm elemanları 0 olan boyutu txt olan kare matris üretir.


Genellikle ones, aynı değerli bir matris oluşturmak ve bazı işlemlerde yardımcı bir araç olarak ; zeros ise script ve fonksiyon işletimini hızlandırmak, mühendislik işlemlerinde sparce matris oluşturmak ve yine bazı işlemlerde yardımcı araç olarak kullanılır.


» e = ones(3)

e =


1.00 1.00 1.00

1.00 1.00 1.00

1.00 1.00 1.00

komutu 3x3 boyutunda her bir elemanı 1 olan kare matris üretir.


» e = ones(2,3)

e =


1.00 1.00 1.00

1.00 1.00 1.00

komutu 2x3 boyutunda her bir elemanı 1 olan bir matris üretir.


» g = zeros(3)

g =


0 0 0

0 0 0


0 0 0

komutu 3x3 boyutunda her bir elemanı 0 olan kare matris üretir.


» g = zeros(2,3)

g =


0 0 0

0 0 0


komutu 2x3 boyutunda her bir elemanı 0 olan bir matris üretir.


c) eye fonksiyonunu kullanmak. Bu fonksiyon ile birim matris oluşturulur. Bilindiği gibi birim matris, birinci diyagoneli 1 olan diğer tüm elemanları 0 olan bir matristir. Genelde büyük I harfi ile temsil edilir. eye fonksiyonu için genel sözdizimi formatı:

F = eye(m,n) veya F = eye([m,n])

şeklindedir. Burada mxn matris boyutunu belirler. eye(t), boyutu txt olan kare matris üretir. Birim matris genelde kare matris olarak kullanılır.

» I = eye(3)

I =


1.00 0 0

0 1.00 0


0 0 1.00
Özel matrisler (pascal, magic, hilbert, spiral, meshgrid vb fonksiyonlarla) oluşturma

a) pascal(k) fonksiyonu: Pascal üçgeni elemanlarından oluşur. Ör. » pascal(4)

b) magic(k) fonksiyonu: kxk boyutunda 1’den k2 ‘ye kadar sayılardan oluşan k=2 hariç eşit satır, sütun ve diagonal toplamına sahip bir kare matris oluşturur. Ör. » magic(3)

c) hilb(k) fonksiyonu kxk boyutunda her bir elemanı 1/(i+j-1) ile belirlenen hilbert matrisi olarak adlandırılan bir kare matris oluşturur. Matrisin genel elemanı hilb(ij) olup i satır,j sütun numarasını gösterir. Ör. >>hilb(5)


MATRİS BİLGİ ALMA FONKSİYONLARI

Matlab’de yerleşik bazı matrisler ilgili fonksiyonlar ile matrisler hakkında bilgi alabiliriz. Bu bilgiler arasında matrisin determinat’ı, rank’ı, matrisin boyutu, matrisin veri özellikleri, diagonel elemanları vb. sayılabilir.

1 4 7


A = -2 5 -8

3 6 1


matrisi üzerinde bazı işlemler yapalım.
» A =[1 4 7

-2 5 -8


3 6 1]

Matrisin transpozesi : Bir A matrisinin transpozesi A' ile bulunur. ' transpoze operatörü ile matrisin satır ve sütunları yer değiştirir. (A')'=A dır yani transpozenin transpozesi matrisin kendisidir.

» TranspozeA = A'

TranspozeA =

1 -2 3


4 5 6

7 -8 1


Matrisin determinantı: Bir A matrisinin determinantı det(A) fonksiyonu ile bulunur. Matris, kare matris olmalıdır.

» A = [1 4 7; -2 5 -8; 3 6 1];

» detA=det(A)

detA =


-224

Matrisin tersi: Bir A matrisinin tersi inv(A) fonksiyonu ile bulunur. Matris, tekil (singular) ve kare (square) matris olmalıdır. Konu dışı olmakla beraber karesel olmayan matrislerin tersini alabilmek için pinv komutu kullanılır.

» A = [1 4 7; -2 5 -8; 3 6 1];

» TersA=inv(A)

TersA =


-0.2366 -0.1696 0.2991

0.0982 0.0893 0.0268

0.1205 -0.0268 -0.0580

» B = [1 0 3; 4 0 6; 2 0 5];

» inv(B)

Warning: Matrix is singular to working precision.

ans =

Inf Inf Inf



Inf Inf Inf

Inf Inf Inf

Görüldüğü gibi eğer matrisiniz singular yani tekil değilse kare matris de olsa tersini alamazsınız. B matrisinin determinantı da det(B)=0’dır zaten. Benzer olarak H=[1 2 -1 ; 3 2 3; 2 2 1] matrisini deneyiniz.

Matrisin rankı:Bir A matrisinin rankı rank(A) fonksiyonu ile bulunur.

» A = [1 4 7; -2 5 -8; 3 6 1];

» rankA=rank(A)

rankA =


3

Matrisin boyutu: Bir A matrisinin boyutu yani kaça kaç olduğu size(A) fonksiyonu ile bulunur. Verilen cevapta yan yana iki sayıdan birincisi satır sayısını, ikincisi sütun sayısını gösterir.

» A = [1 4 7; -2 5 -8; 3 6 1];

» boyutA=size(A)

boyutA =


3 3

yani A matrisi 3x3 boyutlu bir matristir. Daha açık bir şekilde görmek için aşağıdaki komutta kullanılır.



Matrisin diagonel elemanları: Bir A matrisinin ana diagonel elemanları diag(A) fonksiyonu ile bulunur.

» A = [1 4 7; -2 5 -8; 3 6 1];

» ana_diag=diag(A)

ana_diag =

1

5

1



Matrisin özdeğerleri ve özvektörleri: Matrisin öz değerleri ve özvektörleri eig(A) fonksiyonu ile bulunur.

» A = [1 4 7; -2 5 -8; 3 6 1];

» OzDegerler=eig(A)

OzDegerler =

-2.9650

4.9825 + 7.1219i

4.9825 - 7.1219i

Hem ozvektörleri hem de özdeğerlerini bulmak için

» [v,d]=eig(A)

v =


-0.8965 0.4700 - 0.2917i 0.4700 + 0.2917i

0.1810 0.1587 + 0.6635i 0.1587 - 0.6635i

0.4044 0.4735 - 0.0669i 0.4735 + 0.0669i

d =


-2.9650 0 0

0 4.9825 + 7.1219i 0

0 0 4.9825 - 7.1219i

komutu kullanılır. v, sütunlar olarak özdeğer vektörlerini veya özvektörler matrisini ; d, ana diagonel boyunca özdeğerleri gösterir.



MATRİS İNDEKSLEME VE KOLON (:) NOTASYONU

Bir A matrisini düşünürsek

  • A(k) gösterimi k=1,2 ... olmak üzere k. elemanını verir. Eleman sırası ilk sütun elemanlarından başlar ikinci sütun elemanları vb şeklinde devam eder.

  • A(i,j) gösterimi i. satır j. sütun elemanını verir.

  • A(i:j) gösterimi eleman sırası ilk sütun elemanlarından başlayarak i. eleman ile j. eleman arasındaki elemanları verir yani [A(i) A(i+1) ... A(j)] şeklinde bir vektör oluşturur.

  • A(:,j) gösterimi A matrisinin j. sütununu verir.

  • A(:,i:j) gösterimi [A(:,i);A(:,i+1);...;A(:,j)] şeklinde i. sütundan j. sütuna kadar sütunlardan oluşan bir alt matris verir.

  • A(i,:) gösterimi A matrisinin i. satırını verir.

  • A(i:j,:) gösterimi [A(i,:);A(i+1,:);...;A(j,:)] şeklinde i. satırdan j. satıra kadar satırlardan oluşan bir alt matris verir.

Örnek olarak aşağıdaki 5x5 boyutlu yani 25 elemanlı Amatrisi üzerinde duralım:

» A= [ 4 2 3 -1 2; -4 1 -2 2 7; 2 0 3 9 5; 1 -7 3 5 7; 5 -1 0 -2 8]

A =


4 2 3 -1 2

-4 1 -2 2 7

2 0 3 9 5

1 -7 3 5 7

5 -1 0 -2 8

» A(3)

ans =


2

A matrisinin 3. elemanı 2’dir.



» A(18)

ans =


9

A matrisinin 18. elemanı 9’dur.



» A(1,4)

ans =


-1

A matrisinin 1. satır 4. sütun kesişimindeki eleman -1’dir.




» A(1:7)

ans =


4 -4 2 1 5 2 1

A matrisinin 1. elemandan 7. elemana kadar olan elemanları verir.







» A(2,:)

ans =


-4 1 -2 2 7

A matrisinin 2. satırını verir.



» A(3:5,:)

ans =
2 0 3 9 5

1 -7 3 5 7

5 -1 0 -2 8

A matrisinin 3. 4. ve 5. satırlarından oluşan alt matrisi verir.


» A(:,4)

A =


-1

2

9



5

-2


Matrisin 4. sütünunu verir.

» A(:,1:3)

ans =


4 2 3

-4 1 -2


2 0 3

1 -7 3


5 -1 0

A matrisinin 1., 2. ve 3. sütunlarından oluşan alt matrisi verir.





PROGRAMLAMA

Daha önceki bölümlerde komutlarımızı interaktif modda yani komut satırında yazıyor ve işletiyorduk. Programlama mantığı çerçevesinde artık kodlarımızı bir dosyaya yazıp bu dosya üzerinden çalıştıracağız (run) yani işleteceğiz. Bu dosyalar, m dosyaları (m-files) olarak adlandırılır ve genel olarak *.m şeklinde gösterilir. m kelimesi Matlab’in ilk harfinden gelir. Tıpkı C++ dilindeki .c veya Microsoft Word programındaki .doc gibi.
M-dosyalarının iki türü vardır:

  • Düzyazı (script) m dosyaları

  • Fonksiyon (function) m dosyaları

Fonksiyonların genel yazım formatı



function [out1,out2,... ,outN] = fonksiyon_adı (in1,in2,...,inM)

şeklindedir. Bu format yani fonksiyon tanım satırı m-dosyasının ilk satırında olmalıdır. Fonksiyon fonksiyon_adı ile çağrılır ve fonksiyon_adı.m olarak saklanır. (in1,in2,...,inM) giriş argümanlarını, (out1,out2,... ,outN) ise çıkış argümanlarını gösterir. M ve N ıfır veya herhangi bir pozitif tamsayı olabilir. Örnek olarak function [Anapara,faiz] = kredi(P,oran,süre) veya function P = fm_mod(V,T) verilebilir.


M-Dosyalarında Değişken Kullanımı

  • Bir değişkeni atamadan önce atamanın sağ tarafında bir değeri olmalıdır.

  • Bir değişkenin üzerine başka bir değer atarsanız eski değişkenin değeri atanan yeni değişken değeri olur.

  • Değişken adları bir harfle başlamalı, sonra herhangi bir harf rakam ve altçizginin kombinasyonu gelebilir. Matlab büyü k küçük harfleri ayırd eder yani A ile a ayrı değişkenlerdir.

  • Değişken uzunluğu herhangi bir uzunlukta olabilir ancak Matlab değişken adının ilk 63 karaterini dikkate alır. Diğer bir deyişle maksimum değişken adı uzunluğu 63 karakter olmalıdır.

  • Bir değişkene vereceğiniz adın daha once kullanılıp kullanılmadığını kontrol etmek için isvarname fonksiyonu kullanılır. Eğer verdiğiniz ad geçerli ise 1, değilse 0 değerini gösterir.


BİR MATLAB PROGRAMIN ANATOMİSİ

Kullanıcıdan belirli bir formatta bir A matrisini girmesini ve çıkışta girilen bu A matrisinin transpozesini (devriğini) gösteren ve her bir adımı ve aşamayı açıklayan bir program yazınız.



1. Adım: Matlab’i çalıştırınız. Sonra Matlab ekranında File*New*M file komutuyla veya komut satırından edit komutunu yazıp Enter’a basarak etkileşimli m dosyası yazmak için Editor/Debugger ekranına geçiniz. Tekrar belirtmeliyim ki herhangi bir metin (text) editöründe de (örneğin Windows’un Notepad-Not Defteri metin editörünü veya Word programını da kullanabilirsiniz) Matlab m dosya kodunuzu yazabilirsiniz. Ancak progrmaın çeşitli aşamalarını test etmek ve hataları anında düzeltip yeni sonuçları görmek için Matlab’ın kendi editörünü kullanmak daha etkin ve verimli bir yoldur.

2. Adım: Program kodunu yazalım.

% ***** Bu program bir matrisin transpozesini bulur. *****


% Kullanici bir A matrisini girer ve sonuçta bu matrisin

% transpozesi gösterilir.


disp('Asagidaki formatta istediginiz bir kare matrisi giriniz.')

disp(' ')

disp(' [x x x; x x x; ... ] Burada x numerik bir sayi olmalidir.' )

disp(' ')


A = input('A matrisini giriniz: ')

B = zeros(size(A)); % B matrisinin her elemanini

% A ile ayni boyutta sifira ayarlanır.

M = size(A,1); % A'nin satir sayisini bulur

N = size(A,2); % A'nin sütun sayisini bulur
% Matrisin transpoze alma islemi

if N ~= M

disp('Satir sayisi sütun sayisina esit degildir. Baska bir matris giriniz')

break


end
for i = 1:M

for j = 1:N

B(j,i) = A(i,j);

end


end
A_transpoze=B
% Display the A matrix

disp('A matrisi: ')

A

disp(' ')


% Display the B matrix

disp('A matrisin transpozesi: ')

A_transpoze

disp(' ')


3. Adım: Kodu kaydediniz. Yazdığınız Matlab kodunu Ctrl+S veya File*Save komutunu ile gelen pencerede bir ad altında kaydediniz. Örneğin burada mtranspoze.m şeklinde kaydettik. (Eğer başka br metin editörünü kullanıyorsanız dosya uzantısının mutlaka .m şeklinde olmasına dikkat ediniz. Oysa Matlab editöründe .m yazmaya gerek yoktur zira bu uzantı otomatik olarak verilir)

4. Adım: Programı çalıştırınız. Yazmış yani kodlamış ve m dosyası olarak kaydettiğiniz dosyanın Matlab’in şu anki geçerli yolu (path) ile aynı yani şu an aktif olan klasörde olmalıdır. M-dosya editörü Matlab 6.0 versiyonu için yazılan tüm m dosyalarını varsayılan olarak work adlı klasör altında kaydeder ve Matlab’i ilk açtığınızda work klasörü aktif yani geçerli klasör olarak ekrana gelir. Bu nedenle kolaylık olsun diye ilk başlarda m dosyalarınızı work klasöründe varsayılan kaydedebilirsiniz. İleriki aşamalarda bir konu başlığı altında ayrı bir klasör açıp m dosyalarınızı buraya kaydetmeniz ve yine bu klasör altından çalıştırmanız gerekecektir. Şu an dosyamız work klasörü altında ve Matlab geçerli çalışma klasörü work klasörü olduğundan komut satırına mtranspoze yazıp programı çalıştıralım.
» mtranspoze

Asagidaki formatta istediginiz bir kare matrisi giriniz.

[x x x; x x x; ... ] Burada x numerik bir sayi olmalidir.

A matrisini giriniz:

ekranına kare matris olmak üzere istediğiniz bir A matrisini giriniz.

A matrisini giriniz: [1 -4;3 5]

A matrisi:

A =


1 -4

3 5
A matrisin transpozesi:

A_transpoze =

1 3


-4 5
İŞLEÇLER

Matlab’de en temel olarak üç tür işleç vardır:


ARİTMETİK İŞLEÇLER
İşleç

Açıklama

^

Üs alma

+

Toplama

'

Transpoze

-

Çıkartma

.*

Dizi Çarpma(eleman-eleman)

.

Ondalık noktası

./

Dizi sağa bölme (eleman-eleman)

=

Atama

.\

Dizi sola bölme (eleman-eleman)

*

Çarpma

.^

Dizi üs alma (eleman-eleman)

/

Sağa Bölme

.'

Dizi transpoze

\

Sola Bölme








İLİŞKİSEL İŞLEÇLER (RELATIONAL OPERATORS)

Matlab, diziler arasında karşılaştırma yapmak için 6 tane ilişkisel işlece sahiptir. Önemli bir nokta = ve == işleçleridir. = işleci, değişken atama (assigment) ve yerleştirme (replacement) işlevi görür oysa == işleci, matematiksel olarak eşittir anlamındadır.



İlişkisel İşleçler

İlişkisel işleç sembolü

Anlamı

Yardım (help)

<

Küçüktür (Less than)

lt

<=

Küçük eşittir (Less than or equal)

le

>

Büyüktür (Greater than)

gt

>=

Büyük eşittir (Greater than or equal)

g

==

Eşittir (Equal)

eq

~=

Eşit değildir (Not equal)

ne


MANTIKSAL İŞLEÇLER (LOGICAL OPERATORS)

Mantıksal işleçler

İşleç sembolü

Adı

Tanımı

~

NOT (Değil)

P bir dizi ise ~P, P ile aynı boyutlu, yeni bir dizi üretir. Bu yeni dizi P sıfır değilse 0’lardan oluşur; P sıfır ise 1’lerden oluşur.

&

AND (Ve)

P ve Q birer dizi ise P&Q, P ve Q ile aynı boyutlu, yeni bir dizi üretir. Bu yeni dizi P ve Q herikisi de sıfır olmayan elemanlara sahip ise 1’lerden oluşur; P veya Q sıfır ise 0’lardan oluşur.

|

OR (Veya)

P ve Q birer dizi ise P | Q, P ve Q ile aynı boyutlu, yeni bir dizi üretir. Bu yeni dizi P veya Q’da en az bir eleman sıfır değilse 1’lerden oluşur; P ve Q sıfır ise 0’lardan oluşur.


find Fonksiyonu

find fonksiyonu çok yararlı bir işleve sahiptir. Verilen mantıksal koşula göre yani sınamaya göre (koşulu ve sınamayı sağlayan) istenen -sıfırdan farklı olan- verilerin ve elemanların değerlerini değil indislerini (indices) elde etmenizi sağlar. find(a>50) komutu a’nın 50 den büyük olduğu a indislerini belirler.
ŞART DEYİMLERİ (CONDITIONAL STATEMENTS)
if DEYİMİ

if (eğer) deyimin genel formatı:


if mantıksal ifade

deyim


end
şeklindedir. Eğer mantıksal ifade doğru ise deyim de belirtilen işlem yapılır ve end ile işlem sona erdirilir.
a=input('Bir a degeri giriniz: ');

if a < 50

s = 5*a;

end


s
else DEYİMİ

else (başka) deyiminin genel formatı:
if mantıksal ifade

deyim takımı-1

else

deyim takımı-2



end
şeklindedir. Eğer mantıksal ifade doğru ise deyim takımı-1’de belirtilen, yanlış ise yani değilse deyim takımı-2’de belirtilen işlem yapılır ve end ile işlem sona erdirilir. else deyim takımı-2 şeklindeki yazılım da doğrudur ancak else den sonra en az bir boşluk bırakılmalıdır.
a=input('Bir a degeri giriniz: ');

if a < 50

s = 5*a;

else


s = 2*a;

end


s
elseif DEYİMİ

elseif (eğerbaşka) deyiminin genel formatı


if mantıksal ifade-1

deyim takımı-1

elseif mantıksal ifade-2

deyim takımı-2

else

deyim takımı-3



end

şeklindedir. Eğer mantıksal ifade-1 doğru ise deyim takımı-1’de belirtilen işlem, daha sonra başka bir mantıksal ifade-2 verilir ve eğer bu ikinci şart doğru ise deyim takımı-2’de belirtilen işlem yanlış ise deyim takımı-3’de belirtilen işlem yapılır ve end ile işlem sona erdirilir.


a=input('Bir a degeri giriniz: ');

if a < 50

s = 5*a;

elseif a < 100

s = 2*a;

else


s = a/2;

end


s
for DÖNGÜSÜ

Bir for döngünün genel formatı:


for döngüdeğişkeni=ifade

deyimler


end
şeklindedir. Örneğin ifade döngüdeğişkeni=m:j:n şeklinde ise burada m:j:n , j artım miktarlı ilk değeri m son değeri n olan bir sayı aralığıdır. Her for döngüsü end ile kapatılmalıdır.
for i = 1:5

x(i)= i^2 ;

end

x
» orfor



x =

1 4 9 16 25 11


while DÖNGÜSÜ

Bir while (süresince veya iken) döngüsünün genel formatı


while ifade

deyimler


end
şeklindedir. Her while döngüsü de if döngüsü gibi end ile kapatılmalıdır.
x=2;

while x<50

disp(x);

x=x^3-x^2;

end

x

komut satırına orwhile dosya adını yazıp Enter’a basalım.



» orwhile

2

4



48

x =


108288
continue ve break Yapısı

continue ifadesi for ve while döngülerinde verilen şarta göre şart sağlandığında işlem bir sonraki iterasyona geçer, break ise işlemi sona erdirir. Eğer içiçe for veya while döngüsünde kullanılırsa continue ifadesinin geçtiği ve end ile sonlandırılan işlem atlanıp bir sonraki içiçe döngüye geçilir. Aşağıdaki örnekte devam.m kodu çıktısında görüleceği gibi negatif değerli sayılar işleme konmamıştır.
t=[-5,5,-4,4,-3,3-2,2,-1,1];

for k=1:length(t)

if t(k)<0

continue


end

t(k)= log10(t(k))

end

t
Test:



>> devam

t =


-5.0000 0.6990 -4.0000 0.6021 -3.0000 0 0.3010 -1.0000 0
break ifadesi for ve while döngülerinde verilen şart veya durum sağlandığında işlem burada kesilir yani program işletmeyi durdurur. Eğer içiçe for veya while döngüsünde kullanılırsa sadece break ifadesinin geçtiği döngü sona erdirilir ve varsa bir sonraki içiçe döngüye geçilir. Aşağıdaki örnekte kes.m kodu çıktısından görüleceği gibi m=-25 yani ilk negatif değerini aldığında işlem kesilmiştir.
for t=1:10

m=100-t^3

if m<0

break


end

n=sqrt(m)

end

m
Test: >> kes



m =

99

n =



9.9499

....


m =

-25
switch-case Yapısı

switch-case (değiştir-durum) yapısı, yukarıda gördüğümüz if, else ve elseif yapılarının kullanımına bir alternatif getirir. Aslında switch-case ile yapılan herşey if yapılarıyla da yapılır ama switch-case ile yazılan programlar daha okunabilir bir özelliğe sahiptir. Genel formatı
switch giriş ifadesi (skaler veya karakter dizgesi)

case ifadesi

deyim grubu-1



case ifadesi

deyim grubu-2

.

.

otherwise



deyim grubu-n

end
şeklindedir. Giriş ifadesi, her bir case değeri ile karşılaştırılır. Her bir case değeri ayrı bir satırda olmalıdır.
Örnek: sindeg.m adlı bir dosyada, girilen bir açı değerinin hangi bölgede olduğu ve sinüs değerinin ne olduğunu bulmak için aşağıdaki kodu giriniz.
angle=input('Bir aci giriniz: ');

switch fix(angle/90)

case 0

disp('I. Bolge ve pozitif')



case 1

disp('II. Bolge ve pozitif')

case 2

disp('III. Bolge ve negatif')



case 3

disp('IV. Bolge ve negatif')

otherwise

disp('0 ile 360 arasinda bir deger giriniz')

end
sindeg.m dosyasını komut satırından çalıştırınız ve giriş değeri olarak 135 girdiğimizi varsayalım.

» sindeg


Bir aci giriniz: 135

II. Bolge ve pozitif


FONKSİYON FONKSİYONLARI

Fonksiyon fonksiyonları, diğer fonksiyonları giriş argümanı olarak kabul eden fonksiyonlardır. Tüm diğer ayrıntılı bilgiler için » help funfun komutunu kullanınız.



Fonksiyon Adı

Tanımı

fzero

Tek değişkenli bir fonksiyonun çözümünü bulur.

fmin

Tek değişkenli bir fonksiyonun yerel minimumlarını bulur.

fplot

Dizge ile tanımlanmış fonksiyonun grafiğini çizer.

ezplot

Matematiksel ifadelerin grafiklerinin kolaylaştırılmış çizimini yapar.

quad

Bir fonksiyonunun nümerik olarak integral değerini bulur.

ode23

Düşük dereceli diferansiyel denklem çözümü yapar.

feval

Bir fonksiyonun verilen bir değerini bulur. Dizge ile tanımlanmış fonksiyonu işletir

inline

INLINE fonksiyon nesnesini yapılandındırır.

input Fonksiyonu

input fonksiyonu kullanıcıdan bir veri girişi istendiğinde kullanılır. Genel sözdizimi yani formatı:

kullanıcı_girişi = input('prompt')

kullanıcı_girişi = input('prompt','s')

şeklindedir. s takısı giriş olarak bir karakter dizge girişi yani genelde metinsel bir ifade gerektiğinde kullanılır. prompt, geçerli çalışma ortamında değişkenler kullanarak işleme konacak herhengi bir ifade olabilir. input('prompt') kullanıcının klavyeden yapacağı bir giriş için bekler ve girilen değeri kullanıcı_girişine döndürür. input('prompt','s') ise bir değişken adı veya sayısal değerden ziyade girilen dizgeyi bir metin değişkeni olarak döndürür.


» x=input('Herhangi bir sayi giriniz: ');

Herhangi bir sayi giriniz:


M-DOSYALARINDA HATA GÖSTERIMI
disp Fonksiyonu

disp fonksiyonu, program işleyişindeki veya veri girişi hata uygulamalarında genelde metin dizgesel olarak görev yapar.


sayi=input('* 0 ile 1 arasinda bir sayi giriniz * : ');

if sayi > 1

disp('Hata! Sayi 0 ile 1 arasinda olmalidir.')

else


disp(' ')

disp('Rasyonel sayi karsiligi= ')

disp(rats(sayi))

end


» rasyonelkar

* 0 ile 1 arasinda bir sayi giriniz * : 4

Hata! Sayi 0 ile 1 arasinda olmalidir.
error Fonksiyonu

error fonksiyonu, disp fonksiyonunun tek farkı hata mesajından önce bir Error satırı içermesidir.
sayi=input('* 0 ile 1 arasinda bir sayi giriniz * : ');

if sayi > 1

error('Dikkat! Sayi 0 ile 1 arasinda olmalidir.')

else


disp(' ')

disp('Rasyonel sayi karsiligi= ')

disp(rats(sayi))

end


» rasyonelkar

* 0 ile 1 arasinda bir sayi giriniz * : 4

??? Error using ==> rasyonelkar

Dikkat! Sayi 0 ile 1 arasinda olmalidir.


warning Fonksiyonu

warning fonksiyonunun, aslında çok geniş uygulama alanları vardır. Buradaki kullanımı sadece bir örnekleme olması içindir.
sayi=input('* 0 ile 1 arasinda bir sayi giriniz * : ');

if sayi > 1

warning ('Dikkat! Sayi 0 ile 1 arasinda olmalidir.')

else


disp(' ')

disp('Rasyonel sayi karsiligi= ')

disp(rats(sayi))

end
» rasyonelkar

* 0 ile 1 arasinda bir sayi giriniz * : 4

Warning: Dikkat! Sayi 0 ile 1 arasinda olmalidir.

> In E:\bin\rasyonelkar.m at line 5
KARAKTER DİZGE (STRING) İŞLEMLERİ

Karakter dizgeleri veya sadece dizge (string) , iki tek tırnak arasındaki ifade edilen gerçekte ASCII kod tablosunda sayısal kodlarla belirtilen ilk 127 karakterden oluşan dizilerdir (character array). Dizgenin uzunluğu, dizgedeki karakter sayısıdır. ASCII karakterlerinin 32 ile 127 arasında olanları yani 0:255 bölgesi tamsayı ve basılabilir karakterdedir.


» gir='Programa hosgeldiniz';

» gir


gir =

Programa hosgeldiniz


Buradaki gir değişkenindeki her bir harf ASCII kod tablosundaki sayısal bir koda sahiptir.

» kod=double(gir)

kod =

Columns 1 through 12



80 114 111 103 114 97 109 97 32 32 104 111

Columns 13 through 21

115 103 101 108 100 105 110 105 122

double komutuyla gir değişkenindeki her bir harfin kod karşılığını görebilirsiniz. Buna göre p: 80, r: 114 veya o: 111 kodlarına karşılık düşmektedir. double fonksiyonunu kullanarak karakter veri tipinden double veri tipine dönüştürülebilir.
Tam tersi ASCII karşılığı verilen bir dizinin karakter karşılığını bulmak için char komutu kullanılır.

» char(kod)

ans =

Programa hosgeldiniz



1   2   3   4   5


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət