MATLAB Dilinin Temelleri

DERS 3 : MATLAB Dilinin Temelleri
Bu dersten itibaren, yüzeysel değinmeleri bırakıp detaya ineceğiz.
Bu derste ise, matrisler, arrayler, değişkenler ve Command Window kullanımındaki detaylara gireceğiz. Matrisler ve vektörler denklem çözme,plot çizdirme işlemlerimizi daha kolay yapabilmemiz için önemi fazladır.Ve sonunda kısaca polinomları tanımlayacağız.

MATRİSLER
Bizim MATLAB’de girdiğimiz skalar değişkenler aslında 1x1 matrislerdir.



Buradan da size’dan anlaşılıyor.
>>degisken = 13;
>>size(degisken)










Matris Oluşturmak
-          Satır (row) vektörü girmek için, elemanları boşlukla veya virgül ile ayır.
-          Her satır vektörünün sonuna gelindiğinde noktalı virgül (;) kullanarak diğer satıra geç.
-          Elemanların çevresine kare parantez(köşeli parantez) gir :  []
>> A = [16 3 4 13; 5 10 7 8; 9 6 7 2; 0 5 14 1]
















sum, transpose, ve diag
sum : her satırı(column) toplar ve yeni bir vektör üretir.
Eğer biz tek boyutlu matris(yani vektörler)’de sum fonksiyonunu kullanırsak o vektörün tüm elemanlarını toplar.
>>sum(A)
ans =
    30    24    32    24

Transpoz(‘) : “ ‘ “ sembolünü kullanarak bir matrisin transpozunu elde edebilirsiniz.Satırlar ve sütunlar yer değiştiriyor.
>>A’
ans =
    16     5     9     0
     3    10     6     5
     4     7     7    14
    13     8     2     1


   

                >>sum(A’)’

                : Böyle bir işlem tanımladığımızda öncelikle A matrisinin transpozunu aldı ve her bir sütun(column)’u topladı ve bir vektör üretti.Daha sonra bu vektöründe transpozunu aldı.




-          Fakat biz iki tane transpoz işleminden kaçınmak istersek ,
>>sum(A,2) ile aynı işlemi yapabiliriz.

diag : diagonal vektörü bulmak içindir.
>>diag(A)
Bazı Fonksiyonlar ile Matris Üretmek
zeros     :              bütün elemanları 0 olan matris üretir.
ones      :              bütün elemanları 1 olan matris üretir.
rand      :              random(rastgele) sayılar üretir.

>> help rand      >>help randn    >>help fix           (fix fonksiyonu sayıları 0’a yakın olan integer’a yuvarlar.)





                                                            



 







MATLAB’da Sayılar
Normal girdiğimiz sayılar dışında MATLAB’de bilimsel gösterim  “ e ” ile yapılıyor.10’un kuvveti şeklinde yazmamızı sağlıyor.
İ ve j ise karmaşık sayıların imajiner kısmı için kullanılır.
ÖRNEK 1 : A = [3 4 7; 1+3j 6 -2j; 1+9j -2 -7j]          3x3 matris
İlk olarak bir dosyada A matrisini oluşturun.Daha sonra for ve if-else döngülerini kullanarak a matrisinin karmaşık sayılarını 0’a atayarak yeni bir matris oluşturunuz.(help isreal)



MATRİS İŞLEMLERİ(OPERATORLERİ)
+             toplama                       Bu işlemler element-element değil,normal matris işlemleridir.
-           çıkarma
*             çarpma                    
/              bölme
^              kuvvet
'               transpoz

 

+             toplama                                   Bu işlemler element-by-element matris işlemleridir.        
-              çıkarma
.*            Element -element çarpma
./             Element -element bölme
.^             Element -element kuvvet(üs)
 





ÖRNEK 2 : rand ve flor, rand ve ceil, kullanarak A : 5x3’lük ve B : 3x5’lik iki matris oluşturunuz.
Ardından şu işlemleri yapınız :
1.       A*B
2.       A.*B
3.       max(sum(A + B))
4.       C = A*(5*rand(3,5))
5.       C / B
Hata mesajı aldınız mı???

ÖRNEK 3 : Sürtünme Katsayısı Hesaplama
Aşağıdaki deneyde sürtünme katsayısını bulmak amacıyla deneyler yapılmış ve tablodaki gibi veriler elde edilmiştir.


F (Force) ,kuvvet(N)
m (MASS) , kütle(kg)
g = 9:81 m/s2    yer çekimi ivmesi
                       


Buna göre formülü de kullanarak sürtünme katsayısını hesaplayıp yazdırınız.
(The University of Edinburgh, School of Engineering , 2010-2014, an interactive introduction to MATLAB)


ÖRNEK 4 : Değişkenler (Şu anki zaman ve tarih)
1.       clock fonksiyonunu kullanarak start adında değişken oluştur.
2.       start değişkeninin boyutu kaç? Satır vektörü mü yoksa sütun vektörü mü?
3.       start değişkenini string’e çevir. Bunun için datestr fonksiyonunu kullan ve startString değişkenine ata.
4.       start ve startString değişkenlerini startTime dosyasına kaydet.
»help clock
»start=clock;
»size(start)
»help datestr
»startString=datestr(start);
»save startTime start startString       Soru “MIT OpenCourseWare Introduction to MATLAB Lecture 1 ” den alındı.


= = > help elfun                               (birçok fonksiyonu görebilirsiniz.)
format fonksiyonu
Nümerik ifadelerin nasıl yazdırılacağını kontrol eder.
 
























format fonksiyonu ile kontrol edebileceğin gibi ,ayrıca fprintf ve sprintf ile nasıl yazdırılacağını kontrol edebilirsin.

Eğer uzun ifade gireceksen :
Örneğin;
>> s = 1 -1/2 + 1/4 -1/6 + 1/8 - 1/10 + 1/12- 1/8 + 1/14 - 1/16 + 1/18 - 1/20 + 1/22 - 1/24 + 1/26;
Bu ifadeyi tek satırda değil de ikinci  satıra da yazdırsaydık;
>> s = 1 -1/2 + 1/4 -1/6 + 1/8 - 1/10 ...
+ 1/12- 1/8 + 1/14 - 1/16 + 1/18 - 1/20 + 1/22 - 1/24 + 1/26;
>> 
Aşağıya inmek istediğimiz yerde sonuncu ifadeden sonra boşluk bırakıp ,üç nokta (…) koyduktan sonra, alt satıra enter komutu ile geçebiliriz.

NOT : Örneğin Command Window’a
>>rho = (1 + sqt(5))/2  ifadesini girdik ve sqrt yerine sqt yazdık.
Ve bir hata mesajı aldık.Sonra sqrt girmemiz gerektiğini anladık.
İlk olarak klavyeden ↑ ile ,girdiğimiz ifadeyi tekrar yazıyoruz.Veya Command History’den ifadeyi kopyalıyoruz.Sonra ← ile sola kayıp,eksik olan yere “ r ” harfini ekliyoruz.

İndeksleme (Indexing)
A(i,j) matrisinde
i , matrisin satırını(row); j ise sütununu(column) gösterir.
>> A = [2 3 7 ; 1 4 8 ; 3 6 9];
A(2,3) = 8 olur.

Colon ( : ) Operatörü
Colon(iki nokta üst üste),MATLAB’in en önemli opratörlerinden biridir.Değişik çeşitlerde kullanılabilir.
>>1:10
1’den 10’a kadar integer satır vektörü üretir.
1 2 3 4 5 6 7 8 9 10
>>100:-9:36
100’den başlayarak her seferinde 7 azalan satır vektörü :
100    91    82    73    64    55    46    37
>>-pi:pi/2:pi
-3.1416   -1.5708         0    1.5708    3.1416
Aşağıda ise,1’den k’ya kadar olan satırlar ve j. Sütun belirtilmiştir :
A(1:k,j)
>>  A = ceil(10*rand(6,4))
        





 


1)      A(2:4 , 1:2)
Burada satır olarak 2,3 ve4 ; sütun olarak ise 1ve2. ‘yi seçer.
                                             
                                                               




ÖRNEK 5 : Aşağıdaki ifadeleri hesaplayınız.


           a)      A = M([1,3], [2,4])
b)   B = M(:, [1,4:6])
c)    C = M([2,3], :)
Soru şuradan alınmıştır : Gilat, A. (2008). MATLAB: An Introduction With Applications. John
Wiley & Sons, Inc., 3rd edition. Copyright ©2008 John Wiley & Sons, Inc. and reprinted
with permission of John Wiley & Sons, Inc.

SATIR veya SÜTUN Silme :
>> A = [16 3 4 13; 5 10 7 8; 9 6 7 2; 0 5 14 1]
Eğer,3.sütunu silmek istersek,
   A(: , 3) = []          burada 3.sütun ve bütün satırların kesişimini seçmiş oluyoruz.Bu da 3.sütun demektir.
  
Yanda ise A matrisinin 2,3. Satırları ve 1,2,3. Sütunlarının kesişimleri seçiliyor ve 0(sıfıra) eşitleniyor.

ÖRNEK 6 : Bir direncin üzerindeki volt değeri (Ohm kanunundan) v = iR verilmiştir.
i,akım(A)             v,potansiyel fark(V)       R,direnç(W)
Bu direncin üzerindeki güç :
P = Ri2
Eğer R=10 W ve akım 0’dan 10 A değerine kadar 2’şer 2’şer artıyorsa,akım,volt,güç değerlerini veren MATLAB programı yazınız.(JOHN O. ATTIA, ELECTRONICS and CIRCUIT ANALYSIS using MATLAB)

% Voltage and power calculation
R=10; % Resistance value
i=(0:2:10); % Generate current values
v=i.*R; % array multiplication to obtain voltage
p=(i.^2)*R; % power calculation
sol=[i v p] % current, voltage and power values are printed
% the last diary command turns off the diary state

ÖRNEK 7 : Bir kapasitörün boşalma halinde voltaj değeri aşağıdaki gibi verilmiştir.
v(t) = 10(1- e0.2t )
Volt değerlerini gösteren tablo(matris, vektör) oluştur. v(t)
t vektörü 0’dan 50s ye kadar ve artış miktarı 5s.
t1 vektörü oluştur.(0’dan 50s ye kadar,artış miktarı 0.5 ) ve v(t1) grafiğini çiziniz.

ÖRNEK 8 : A = [2 7 9 7; 3 1 5 6; 8 1 2 5] verilen matris ile aşağıdaki işlemleri uygulayınız.
(a) A
(b) A(:,[1 4])
(c) A([2 3], [3,1])
(d) A(:)
(e) [A A]
(f) [A;A(1:2,:)]
Bu soru “An introductory course in MATLAB: MATLAB for beginners, Alba M. Franco-Pereira, September 2010”’ kaynağından alınmıştır.


Polinomları matris olarak tanımlarız,bu yüzden kısaca polinom işlemlerine de bakalım.
Polinomlar
Matlab’de polinomlar katsayılarının vektörü ile tanımlanır.
Örnek: P(x) = -2x^5 + 3x^3 -x + 7 polinomunu yazınız.
P = [-2 0 3 0 -1 7]
x4 ve x2  dereceli terimlerin katsayılarının 0 olarak girildi.

Polinomun kökleri
P polinomunun kökleri roots komutu ile bulunabilir.
>> r = roots(P)
r =
  -1.2297 + 0.6225i
  -1.2297 - 0.6225i
   1.5136         
   0.4729 + 0.9969i
   0.4729 - 0.9969i

Kökleri bilinen bir polinom
Kökleri [-2 3] olan polinomu için poly
ans =
     1    -1    -6 (x2 - x -6)

Polinomun belli bir noktada değeri
Bu amaçla polyval fonksiyonu kullanılır.

>> polyval(P,2)

ans =
   -35

Polinom türevi  için         : help polyder
Polinom integrali için : help polyint

Hiç yorum yok:

Yorum Gönder