Ana Sayfa Programlar Matlab & Simulink Seri Programlama Teknikleri-1

Seri Programlama Teknikleri-1

1206
0

Hız istendiğinde ilk akla gelen yöntem, çok çekirdekli çalıştırma olmaktadır.  Fakat yazdığınız bir kodun çok çekirdekli bir şekilde çalışabilmesi, bu duruma alışık olmayan biri için çok uç gözükebilir Bu nedenle ilk önce seri bir şekilde çalışan programımız üzeride minimum çalışma süresine ulaşıp daha sonra çoklu çekirdek seçmeliyiz.

Matlab üzerinde (Diğer programlama dillerinde de kullanabilirsiniz) seri programlama yaparken 2 farklı yöntem ile hızlana bilirsiniz. Bunlar ön tanımlama ve vektörizasyon dur.

Ön tanımaladan kasıt , çalışma sürecinde bir for ve while döngüsü içerisinde dinamik olarak değişen bir matrisin , döngüye girmeden önce maksimum olabilecek boyutunun tanımlanmasıdır. Böylelikle matlab her döngüde matrisin boyutunu değiştirmek zorunda kalmaz ve sadece matris içerisine yerleştirme yapar . tabi buda sizin çözüm sürenizi azaltacaktır.

1000000 ‘lık bir for döngünüz var ise bunu bir ön tanımlama ile verdiğinizde , matlab 1 milyon defa matris boyut değiştirme işlemi yapamamaktadır.

tic
x = 0;
for k = 2:1000000
   x(k) = x(k-1) + 5;
end
toc
Elapsed time is 0.301528 seconds.

Aşağıda olduğu gibi ön tanılama ile süreleri kat kat azaltabilirsiniz.

tic
x = zeros(1, 1000000);
for k = 2:1000000
   x(k) = x(k-1) + 5;
end
toc
Elapsed time is 0.011938 seconds.

Ön tanımalar için nümerik matrisler için “zero”, srtingler içinse “cell” komutunu kullabilirsiniz.

Ayrıca her hangi bir değişkeni kodlamada örneğin double olarak kullandınız ve kodun ilerleyen bölümlerinde  bu değişkeni stringe çevirdiniz . Bu işlem yeni bir değişken yaratmaya göre daha uzun süre almaktadır. Böyle bir işlemde matlab değişkeni double’dan stringe dönüştürme işlemi yapar tabi buda performansı düşürmektir. Bu kısmı da ideal olan değişkenleri sınıflarına göre tanılamak, zorda kalmadıkça sınıflar arası değişken dönüşümü yapmamaktır.

X = 23;
     .
-- other code  --
     .
X = 'A';                  % X changed from type double to char
     .
-- other code  --

Kodlamarınızda ayrıca bol bol if ve while yapıları kullnıyorsanız bu yapıları ”OR ve ‘AND’ yani || ve && ile daha sade bir şekilde yazarsanız böylelikle matlab koşulları kontrol ederken daha az efor sarfe decektir.

if (isnumeric(varargin{1})) && (ischar(varargin{2}))

Aşağıdaki kodta matlab ilk koşul sağlanıyorsa , if döngüsün içerisinde girer ve diğer döngüyü kontrol eder, yukarıda ise ilk koşul sağlanmaz ise ‘AND’ koşulu yüzüden diğer koşulu kontrol etmeden dedam eder.

if (isnumeric(varargin{1}))
     if  (ischar(varargin{2}))

Bir sonraki yazımda vektörizasyon nedir ve ne gibi faydaları olduğundan bahsedeceğim.

iyi kodlamalar…=)

0 0 votes
Article Rating
Subscribe
Bildir
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Yorum
Inline Feedbacks
View all comments