Yapılar(Structures)

Posted by Admin On Monday, August 27, 2012 0 comments
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 şöyle yapmamız gerekir:

a='fieldname';
S.(a)=value;

Ayrıca, structure bir fonksiyon için input olarak kullanılabilir.



READ MORE

Yapı Dizilerinde İndeksleme(Indexing into Structure Arrays)

Posted by Admin On 0 comments
İ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).a}

READ MORE

Yapı Dizileri(Structure Arrays)

Posted by Admin On Sunday, August 26, 2012 0 comments
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

READ MORE

Hücre Dizileri(Cell Arrays)

Posted by Admin On Friday, August 24, 2012 0 comments
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 [ ] kullanabiliriz.
Ayrıca süslü parantezler { } hücrenin içeriğine erişimimizi sağlarken normal parantezler ( ) hücrenin kendisine ulaşmamızı sağlar.

READ MORE

Tam Sayı Dizileri(Integer Arrays)

Posted by Admin On 0 comments
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.

READ MORE

Matlab Veri Çeşitleri(Matlab Data Types)

Posted by Admin On 0 comments
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 class
READ MORE

Hafıza Ön Ayırması(Preallocation of Memory)

Posted by Admin On 0 comments

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. Yani kodumuzun performansını bilinçli olarak artırmış oluruz.
READ MORE

Kodun Performansı(Code Performance)

Posted by Admin On 0 comments

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 kodumuzu çalıştırır ve geçen zamanı command window da gösterir.
Matlab Profiler bize bu konuda daha ayrıntılı bilgi verir. Desktop sekmesinden Profiler seçilerek profiler ı açabiliriz ya da profile viewer komutu ile açabiliriz.

READ MORE

Derlemeye Son Verme(Ending Debugging)

Posted by Admin On 0 comments
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ılabilir.

READ MORE

Değerleri Test Etme(Examining Values)

Posted by Admin On 0 comments
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:

  1. 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.
  2. Debug modda komutları command window a girebiliriz değerleri test etmek için.
  3. Debug yapılırken editörde mouse u değerini ya da değerlerini görmek istediğimiz değişkenlerin üstüne sırayla götürerek görebiliriz.
READ MORE

Kesme Noktalarını Kullanma(Using Breakpoints)

Posted by Admin On 0 comments
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 noktası tipi vardır:

  • A Standard breakpoint,       bu belirlenmiş bir satırda durur.
  • A Conditional breakpoint,    bu belirli bir satırda belirlenmiş koşullar gerçekleştiğinde durur.
  • An Error breakpoint,            bu ise kod belirlenmiş bir uyarıyı ya da hatayı yada NaN ya da infinite value durumlarında durur.
Ayrıca editörde Stack field vardır. Buradan aktif workspace i değiştirebiliriz kodumuzu derlerken(debug ederken).
READ MORE

Derleme-Ayıklama(Debugging)

Posted by Admin On 0 comments
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ır.
READ MORE

Editörde Kod Analizi

Posted by Admin On 0 comments
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 görünür. Renkler ve anlamları şöyledir:

Yeşil         Kodda yazım hatası yok demektir.
Turuncu   Beklenmeyen sonuçlar getirebilecek bir potansiyel var ya da performans açısından yetersiz bir ifade.
Kırmızı     Yazım hatası var anlamındadır.


READ MORE

The Matlab Path

Posted by Admin On Thursday, August 23, 2012 0 comments
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 şöyle ki;
which function_name or file_name -all
Aynı isimdeki bütün dosyaların yerlerini pathleriyle birlikte öncelik sırasına göre verir.
*Mini Bilgi:matlabroot komutu matlab bilgisayarınızda hangi klasöre kurulmuşsa o klasörün path ini verir.
                                                                                                                                    
                                                                                                                                                  
READ MORE

Alt Fonksiyonlar(Subfunctions)

Posted by Admin On 0 comments

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.

READ MORE

Fonksiyonların Çalışma Alanları

Posted by Admin On 0 comments
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 silinir.
READ MORE



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 bulunur:
resid=fitM-M;
mse=resid'*resid/N;
READ MORE

Otomatikliği Artırmak-Fonksiyon Yaratmak-Fonksiyon Çağırmak

Posted by Admin On 0 comments

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 çağrılır.

READ MORE

FFTs

Posted by Admin On 0 comments


fft fonksiyonu DFT hesabı için bir fast fourier transform(FFT) algoritması kullanır.
Bazı terimler ve hesapları:
y                               sampled data
n=length(y)                number of samples
Fs                             Samples/unit time
dt=1/Fs                    Time increment
t=(0:n-1)/Fs              Time range
Y=fft(y)                    Discrete Fourier Transform(DFT)
abs(Y)                      Amplitude of the DFT
conj(Y).*Y/n            Power of the DFT
Fs/n                          Frequency Increment
f=(0:n-1)*(Fs/n)        Frequency range
Fs/2                          Nyquist frequency

READ MORE

DFT In Matlab

Posted by Admin On 0 comments



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 çizer.

READ MORE

Slash ve Backslash

Posted by Admin On 0 comments



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.


READ MORE

Alt Fonksiyonlar(Subfunctions)

Posted by Admin On 1 comments
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.


READ MORE