Yapılar hücre dizileri gibi birbiriyle benzerliği olmayan bilgileri bir araya getirmek için kullanılır. Bilgiler tek bir değişkende toplanır yani yapıda.(structure) Şöyle tanımlanır:
S.fieldname=value; S:yapının adıdır, fieldname:alt daldaki etikettir, value: alt daldaki bu etiketin değeridir.
Eğer field name i bir değişkende taşımak ve bunu bir structure da kullanmak istiyorsak...
İndeksleme normal parantezlerle veya direk field name ile yapılabilir. Örnekler:
S(2)
S.a
S(3).a
S([1,5])
S(1:4).a
y={S(1:4)....
Yapı dizileri herhangi bir boyutta olabilirler. Elemanlara parantezle erişilebilir. Örneğin:
S(1).a=4;
S(2).a=5;
S(1).b=46;
S(2).c=ones(3);
S(3).a=magic(2);
S(4).b='world';
S
S =
1x4 struct array with fields:
a
b
c...
Hücre dizileri herhangi bir tip veya boyuttaki dizileri birleştirmek için kullanılabilir. Teknik olarak bir hücre dizisindeki hücreleri birer işaretçi(pointers) gibi düşünebiliriz.
Hücre dizileri için hafızada ön ayırma yapabiliriz. Şöyle ki:
x=cell(m,n);
komutu mXn boyutunda boş bir hücre dizisi oluşturur.
Hücre dizilerini birleştirmek için süslü parantez { } ya da köşeli parantez...
Matlabta dört tane işaretli ve dört tane işaretsiz olmak üzere toplamda sekiz tane tam sayı veri çeşidi vardır. Bunlar:
int8, int16, int32, int64
uint8, uint16, uint32, uint64
Örneğin:
B=zeros(m,n,'int8');
B nin elemanları hafızada int8 tipine göre kaydedilecektir....
Matlab'ta 15 tane temel veri çeşidi vardır.
Bunların başlıcaları:
logical
char
numeric(single,double)
cell
structure
function handle
user clas...
Bazen yazdığımız scriptlerde matris ya da dizi oluştururken baştan bunların boyutları tam olarak belli olmayabilir. Bu Matlab'in işi daha yavaş yapmasına neden olur. Ancak daha işlemin başında kodumuza şöyle bir satır eklersek:
A=zeros(m,n);
bu Matlab'in işin başında A matrisi için hafızada yer ayırtmasına ve geri kalan işlemleri ve değişiklikleri daha hızlı yapmasına yardımcı olur....
Matlab'ta belirlenmiş altı tane görev vardır. Bunların doc bench yazarak görebiliriz. bench(n) komutu bize bu görevlerin farklı bilgisayar ve işletim sistemlerinde ne kadar zamanda yapılabileceğinin karşılaştırmalı
grafiklerini verir.
Kodumuzun ne kadar zamanda çalıştırıldığını bulmak için tic ve toc komutlarını kullanırız. Şöyle ki:
tic; code_name; toc;
komutu...
Derleme yapılırken derlemeye Debug sekmesinden Exit Debug Menu seçilerek son verilebilir. Hatalar bulunup düzeltildikten sonra clear breakpoints in all files simgesine tıklanarak kesme noktaları kod dosyalarından kaldırılabili...
Kodumuzu derlerken aynı zamanda değişkenlerin değerlerini de test edebiliriz beklediğimiz gibi mi yada değil mi diye. Bu üç yolla yapılabilir. Bunlar:
Atama olan her satırın sonundaki noktalı virgülleri kaldırmaktır. Çünkü bu şekilde atamaların sonucundaki bütün değerler command window da yazılacaktır.
Debug modda komutları command window a girebiliriz değerleri test etmek için.
Debug...
Eğer hata mesajları bir hatanın yerini belirlememize yetmiyorsa editöre kesme noktaları(breakpoints) yerleştirerek Matlab Debugger ı aktif hale getirebiliriz. Bu şekilde kodumuzu çalıştırırsak Debugger her kesme noktasında derlemeyi kesecek ve bizim devam et dememizi bekleyecektir. Bu şekilde hatanın hangi satırda ya da blokta olduğunu kesin bir şekilde bulabiliriz. Üç tane temel kesme...
Editörde yazdığımız bir scripti command line dan ya da editörden çalıştırmayı denediğimiz zaman matlab önce kodu derlemeye başlar. Yani yazım hatalarını aramaya belirmeye başlar ve bize hataları öncelik sırasına göre sıralar.Script çalıştığı halde işini yapmıyorsa ya da sonuç beklediğimiz gibi değilse run-time hatalar vardır. Bu tür hatalar algoritmik hatalard...
Matlab editörü kod analizi yapan bir araca sahiptir. Biz kodlarımızı yazarken yazım hataları için kontrolü yapar bu araç. Hatalı kısımları veya uyarı ya da tavsiye vermek istediği kısımların altını çizer. Mouse ile altı çizili kısmın üstüne gidersek bize hatayı,uyarıyı ya da tavsiyesini gösterir. Ek olarak, kodda bazı belirli problemler turuncu ya da kırmızı renkte altı çizili çizgilerle...
Matlab path ayarlarını pathtool komutunu command window a yazıp açılan Set Path penceresinden ayarlayabiliriz. Ayrıca Set Path penceresini file sekmesinden de açabiliriz. path komutu bize kayıtlı bütün path leri verir. which komutu dosyanın ya da fonksiyonun yerini path ismi ile birlikte verir. (which file_name or function_name)
Eğer which komutu all opsiyonu ile birlikte kullanılırsa...
Bir fonksiyon dosyası birden fazla fonksiyona ait declaration ve tanımlamaları içerebilir. Ancak bunlardan sadece en üstteki yani primary fonksiyon workspace ten çağrılabilir. Diğerleri sadece fonksiyon dosyasının içinde çağrılabilir....
Bir Fonksiyon çağrıldığı zaman ona ait bütün değişkenler ana workspace ten ayrı olarak başka bir workspace te tanımlanır kaydedilir. Fonksiyonun çalışması bittiği zaman bu özel-ayrı workspaceteki değişkenler silin...
F=Vandermonde matrix, c=katsayılar, M=data, fitM=fitlenmiş data(yeni modelimiz), resid=hata, mse=mean square error ,N=datanın eleman sayısı olsun.
Önce Vandermonde matrisi istenildiği gibi üretilir boyutu fitlenicek datanın boyutuna uygun olarak. Daha sonra F*c=M denklemi backslash yöntemi kullanılarak çözülür(c=F\M). fitM=F*c den bulunur. Diğer değerler de aşağıda belirtildiği gibi...
Otomatikliği Arttırmak
Kendi yazdığımız veya önceden yazılmış hazır scriptleri veya fonksiyonları kullanarak otomatikliği arttırabiliriz.
Fonksiyon Yaratmak
Fonksiyon dosyaları her zaman bir function declaration ile başlar. Şöyle ki:
function [out1,out2,...]=function_name(in1,in2,...)
bu komut satırı her fonksiyon dosyasının başında mutlaka bulunmalıdır.
Bir Fonksiyonu Çağırmak
[out1,out2,...]=function_name(in1,in2,...)
ile...
Matlab ile herhangi bir vektörün Discrete Fourier Transformunu bulup çizdirebiliriz. fft komutu discrete fourier transform alır.
Ayrıca Matlab'ta bir arayüz vardır. Ve fftgui komutu ile çalışır.
fftgui(x) komutu: real(x),imag(x),real(fft(x)), ve imag(fft(x)) i çize...
Matlab ile liner denklemlerin çözümünü yapabiliriz. Eğer sistem AX=B şeklinde ise çözüm X=A\B ile bulunur. Bu yüzden backslash aynı zamanda "left divide operator" olarak da bilinir.
Sistem XA=B şeklinde ise çözüm X=B/A ile bulunur...
Bir fonksiyon dosyası birden fazla fonksiyona ait declaration ve tanımlamaları içerebilir.
Ancak bunlardan sadece en üstteki yani primary fonksiyon workspace ten çağrılabilir. Diğerleri sadece fonksiyon dosyasının içinde çağrılabilir.
...