%% MATLAB Kullanımı
%
% [ ]-Köşeli Parantez: Vektörleri ve matrisleri biçimlendirmek için kullanılır. Örneğin [5.45  9.3  sqrt(-6)] elemanları boşluklarla ayrılmış  üç elemanlı bir vektördür. Bunun yanında [5 6 45;12 91 2 ; 54 45 12], üç satır ve üç sütundan ibaret 3x3 lük bir matrisi gösterir. Burada noktalı virgül (;) matris oluşturulmasında bir satırı sona erdirip bunu izleyen satırın oluşmasını sağlar. a=[ ] biçiminde bir bildirim boş bir matrisi A değişenine atar.

[5.45  9.3  sqrt(-6)] 
a = [5.45 2.25 ; 9.3 2 ; 1 sqrt(-6)] 
a=[]
clear a

a=[ 3, 4    5 6 7 8, 9 , 10 ] 
a= [a  6 7 8 9 ]
a=[ 1 2 a ]

% Matlab'da genişlen matris (diziler ) vardır.
% Matlab'da dizinin indisleri 1 den başlar.
%
%
%
% (  )-Normal Parantez: MATLABda normal parantez çeşitli çalışmalarla çeşitli yerlerde kullanılır. En önemlisi; aritmetik deyimlerin üstünlüğünü belirmek ve fonksiyon argümanlarını kapatmak için kullanılır. Eğer X ve Y bir vektör ise X(Y) de bir vektördür ve [X(Y(1)),X(Y(2)),…,X(Y(N))] şeklinde ifade edilir.
%
% indisler başka programlama dillerinde olduğu gibi 0 dan başlamaz. Matlab'da indisler 1 'den başlar.
%
% aritmetik öncelik için kullanılır : 3^(1/3)
% fonksiyonların argümanlarını kapatmak için : sin(90) ,
%  sin( 90 , 30 )    --> yanlış
%  sin( [ 90 30 ]  ) --> her bir elemanın sin hesaplaması yapılır.

B = [ 1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12 ]
B(1)
B(1,1)
B(2,3)
B(10)=6789
%B(19)

%B(1,2) = [] 
B(2,:) = []

B(:,:)

B(:) 
B(:,3) = [ 1 2 3]

%
% .-Nokta:Kesir ayırma işaretidir. 1452/10, 1.452 ve .1452e1 aynı anlama gelir. Bu işaret aynı zamanda eleman elemana çarpma ve bölme işleminde de kullanılabilir. Buna göre kullanış biçimleri .*, .^, ./, .\ veya .’. şeklindedir.
% . --> elemetwise  ( eleman elaman işlem yap)
% Türkiye'de kullanılan para gösterim şekli :
%                 1.000.000,85 TL
% ondalık ayıracı : ,     binlik ayıracı : .
% Amerika :     $1,000,000.85
% ondalık ayıracı : .     binlik ayıracı : ,
%
% bilimsel notasyon e 10 üzeri olarak gösterilir. 0.345e-18
% 0.00000008000000000003450000
% 0.00000000000000000001234000
%

c=50,85
c=50.85

c=[ 50,85]

d = [ 1 2 3 4 ] 
%d^2
d.^2

%
%
% ...-Üç Nokta:Bir tek satıra sığmayan ifadelerin devam ettiğini belirmek için kullanılır.
%
%
% ;-Noktalı Virgül:Bu işaret bir bildirimde elde edilen sonuçların programın icrası sonunda akranda görüntülenmesini engellemek için kullanılır. Aynı zamanda matris oluşturulmasında bir satırı sona erdirip bunu izleyen satırın oluşmasını sağladığını da söylemiştik.

e=[ 5 6 ; 7 8 ];

%
% %-Yüzde İşareti: Açıklama yapılacağı zaman ilgili satırlara bu işretle başlanarak yapılır.  % işareti ile başlayan MATLABtarafından dikkate alınmaz ve icraya da sokulmaz.

mod(5,2)

%
% !-Ünlem işareti:Herhangi bir yazı DOS işlemi görür. Böylece MATLAB içerisinde iken DOS komutları ile çalışılabilir.
% NOT: ! değil operatörü olarak kullanılmaz. ~ (tilda) Değil operatörüdür.

!pwd

%
% :-İki Nokta:Bu işaret sütun işareti olarak kullanılır ve her yerde kullanılabilir. Örneğin; J:K J’den başlayarak birer birer K ya kadar artan bir dizi oluşturur ve [J, J+1,...,K] ile aynı anlama gelir.

1:10
1:2:10
%35 ile 61 arasındaki çift sayılar 
35:2:61
36:2:61
10:2:1
100:-2:1
%r(5:end,5)

%
%
%
% ‘-Tırnak işareti:matrislerin transpozunun alınmasını sağlar. M’, M matrisinin karmaşık eşlenik transpozonu M’. ise eşlenik olmayan transpozunu sonuçlandırır.
% Matris transpozu = satırları sütun, sütunları satır yap.

'M'

%
%% MATLAB DEĞİŞKENLER
%
% Deve ve Paskal Notasyonları: Yukarıdaki ipucunda anlatılanlara imkan sağlayan notasyonlar deve ve paskal notasyonlarıdır. Bu göstereceğimiz notasyonlar dünyada genel kabul görmüşlerdir ve diğerlerine göre daha fazla tercih edilirler. Deve notasyonudeğişken tanımlamalarında, Paskal notasyonu ise dosya isimlendirmelerinde (düzyazı ve fonksiyon m-dosyaları) kullanılırlar. Deve Notasyonudeğişken adı birden fazla değişken içeriyorsa ilk kelime hariç diğer bütün kelimelerin ilk karakterlerinin büyük harfle yazıldığı bir notasyondur. Deve Notasyonu ile tanımlanmış değişken isimlerine birkaç örnek olarak sayi1, enKucuk, bankaHesapNo ve basamakSayisi verilebilir.
% Dosya isimlendirmelerde kullandığımız Paskal Notasyonunun Deve Notasyonundan tek farkı dosya adını oluşturan ilk kelimenin ilk karakterinin de büyük harfle yazılıyor olmasıdır. Paskal Notasyonu ile tanımlanmış dosya isimlerine örnek olarak AsalSayiMi.m, OrtalamayıHesapla.m ve ToplayarakCarpma.m verilebilir. .m, daha sonra da öğreneceğimiz üzere MATLAB programlama dosyalarının uzantısıdır.
%
%
%% MATLAB Sayılar ve Sabitler
% MATLABde negatif bir sayıyı temsil için o sayının önünde (-) işareti vardır. Bir sayının önüne (+) işareti koyulması veya hiçbir işaret koyulmaması o sayının pozitif olduğunun delilidir. Kayan noktalı (ondalık) sayılarda ayraç olarak nokta(.) ve 10 sayısının kuvvetini temsilen e harfi kullanılır. Karmaşık sayıların sanal kısımları MATLAB de son takı olarak i harfi kullanır. Bu bilgiler ışığında MATLAB yorumlayıcısının anlayacağı birkaç rakama örnek olarak 6, -175, 3.1416, 2.54e2, 7i veya 5+7i verilebilir. Aşağıda MATLAB’ da kullanılan bazı sabitler ve kullanım amaçları açıklanmıştır.

a= 2.54e-20

% Karmaşık Sayılar : Matlab i ve j karakterlerini ima.


i=5
5+6*i
6+8*j
j=10
6+8j
12+5i

%
% Ans:Bu değişken bir deyim tarafından hesaplanan fakat bir değişken ismi altında saklanmayan değerleri saklamak için kullanılır.
%
% inf (∞):  Bu kelime MATLAB’ ta sonsuz değeri için atanmış bir değişkendir ve sıfıra bölme işlemlerinde ortaya çıkar. Eğer sıfıra bölme işlemi görüntülenmek istenirse bir uyarı mesajı alınır ve sonuç ∞ işareti şeklinde görüntülenir veya basılır.

5/0
5^inf
inf/8
8^inf

%
% NaN:Bu değer Not-a-Number (rakam değil) anlamına gelir ve sıfır bölü sıfır bölümünde olduğu gibi tanımlanmamış deyimlerde ortaya çıkar.

0/0
1^inf

%
%
% Eps:Bu değer fonksiyon, kullanılmakta olan bilgisayar için floating point (virgüllü sayılar) tamlığını içerir. Bu epsilon tamlığı 1.0 ve bunu izleyen en büyük decimal (onlu sayılar) arasındaki farktır.
%

eps

%
%
%% Özel Vektör Yapıları

zeros(10)

% zeros(1,n) :Tüm elemanları sıfır olan n elemanlı satır vektör.
% zeros(n,1) :Tüm elemanları sıfır olan n elemanlı sütun vektör.
% ones(1,n) :Tüm elemanları bir olan n elemanlı satır vektör.
% ones(n,1) :Tüm elemanları bir olan n elemanlı sütun vektör.
% rand(1,n) :Elemanları 0 ile 1 arasından rastgele seçilmiş n elemanlı satır vektör.
% rand(n,1) :Elemanları 0 ile 1 arasından rastgele seçilmiş n elemanlı sütun vektör.
% randn(1,n) :Ortalaması 0 ve standart sapması 1 olan normal dağılımlı elemanlardan oluşan n elemanlı sütun vektör.
% randn(n,1) :Ortalaması 0 ve standart sapması 1 olan normal dağılımlı elemanlardan oluşan n elemanlı sütun vektör.

ones(1,15)
ones(1,15)*15


rand(5)
round(rand(5,3)*100)

% r = randi([-10 10],100,1);  -10 ile 10 arasında 100x1 boyutunda tam sayılardan oluşan bir matris üretir. R = randi([IMIN,IMAX],...) returns an array containing integer values drawn from the discrete uniform distribution on IMIN:IMAX.

r = randi([-10 10],10,15)

% round en yakın tamsayıya yuvarlar.
%
% 65 bile 90 arasında rastgele tam sayılar üretin.
%

round(5.99)
round(5.1)
round(5.499)
round(5.5)
round(5.50000001)

%
% karmaşık sayılar

B=[3+6i 8i;6+10i 14] 

%
%
%
% MATLAB’ da Matrislerin Boyutunun Değiştirilmesi
% MATLABda A(m x n) boyutunda bir matris var ise, bu matris m*n = p*q olmak şartıyla B(p x q) boyutunda bir matrise dönüştürülebilir.
% Aşağıdaki A matrisi (2×3) boyutundadır. A matrisinin (3X2) boyutuna getirilmesi aşağıda gösterilmiştir.
% 4x3 , 3x4, 6x2,12x1,1x12,2x6

A = [10 8 6 ; 1 3 5]
B = reshape(A,1,6)

%
% repmat  : repmat Replicate and tile an array.

[1 2 3 1 2 3 1 2 3 1 2 3 ]
repmat([ 1 2 3] , 2, 3 )

%
%
% Satranç tahtası çizdirin.
%
%
%
% Hazır Matris fonksiyonları magic

magic(2)

D= repmat(magic(2), 2, 3) 
D=magic(5)

% Matris Toplamı :
% sum(XXX) : bir matrisin sütun sütun elamanlarını toplar.
% vektörlerin toplamını bulur.
% sum(XXX,2) : XXX matrisin 2. boyutunda işlem yapar. Satırların toplamı

sum(D)
sum(D,2)
sum(diag(D))

% Çok boyutlu matris

E=rand(5,4,3)*100
sum(E,3)
mean(E)
max(max(E))

size(E)
length(E)

% Matlab’da prod komutu: prod(x) = Vektörün elemanlarını birbiriyle çarpar.

boyut = size(E)
prod(boyut) 
numel(E)

%
% Lojik İşlemler

x = [-8 0 -1 3 4 5];
x==2
x>2
x<0

%
%
% Matlab’da find komutu: find(x) = Vektörün sıfır olmayan elemanlarının indeksini verir.

x = [-8 0 -1 3 4 5];
find(x)

%
% Ayrıca find komutu içinde verilen koşulu sağlayan elemanların indekslerini de verir.

x = [-8 0 -1 3 4.5]; 
a=find(x>1)

%
%    x vektörünün sıfırdan küçük elemanlarını pozitif yapın.

%for i=1:length(x)
%    if x(i)<0 
%        x(i)=-1*x(i);
%    end
%end
konumlar  = find(x<0)
x(konumlar) = -1 * x(konumlar)

intmax('uint64')

%
%
%
%
%
%
%
%
%
%
%