Temel MATLAB Programlama

Diyelim yarım dalga doğrultulmuş bir sinüs dalgasının etkin ve ortalama değerini bulmaya çalışıyoruz. Bunu MATLAB ile nasıl yapabiliriz görelim. Bu problemi çözmenin MATLAB'de birçok yolu var. Aşağıda üç tane metot anlatılmıştır.


Prosedürel programlama tarzı ile

C gibi prosedürel bir programlama dili mantığı ile bu problemi çözmek için şöyle bir program yazılabilir. Bu metotta, belli bir örnekleme hızı ile çalışarak dijital olarak sinüs sinyali üretiyoruz. Burada f üretilecek sinüsün frekansı, fs sinüsü üretirken kullandığımız örnekleme frekansı, n de üretilecek döngü sayısı.

C-like:
clear

f = 50;
fs = 50000;
n = 5;

for t = [0:1:(n * fs / f - 1)]
    d = sin(2 * pi * f * t / fs);
    if d > 0
        w(t + 1) = d;
    else
        w(t + 1) = 0;
    end
end

plot(w);

rms(w)

mean(w)

Programı çalıştırınca hem üretilen sinüsün grafiğini görüyoruz hem de RMS değeri 0.5, ortalama değeri de 0.3183 olarak görüntüleniyor.

1654885059010.png


MATLAB dilinin özelliklerini kullanarak

Burada MATLAB'in matris ve vektörlerin işlenmesinde sağladığı özellikleri kullanarak çok daha etkili bir şekilde sonuca gidiyoruz. Önce örnekleme anlarını temsil eden bir t vektörü oluşturuyoruz. Sonra da bu anlardaki sinüs değerlerini içeren bir w vektörü oluşturuyoruz. Sonra da w nin negatif olan değerlerini atmak için MATLAB'in "conditional statement" özelliğini kullanarak w_rec vektörünü elde ediyoruz. Bu vektör yarım dalga doğrultulmuş sinüs'tür. Bunun üzerinde de gene rms ve ortalama değer hesabı yapıyoruz ve aynı sonucu alıyoruz.

C-like:
clear

f = 50;
fs = 50000;
n = 5;

t = 0:1 / fs:(n / f - 1 / fs);
w = sin(2 * pi * f * t);
w_rec = w .* (w > 0);

plot(w_rec);

rms(w_rec)

mean(w_rec)

1654885785186.png



MATLAB sembolik hesaplama özelliğini kullanarak

MATLAB'in en ilginç ve ileri seviye özelliklerinden birisi de sembolik olarak işlem yapması. Tabi işlemler karmaşıklaştıkça net sonuç almak her zaman mümkün olmuyor, biraz deneme yapıp sorun çıkıyorsa sağda solda değişiklikler yapmak gerekebiliyor. Mesela bir sinüsün RMS değerinin genel formülü oldukça karmaşıktır. Wikipedia'dan bakalım:

1654889806858.png


MATLAB bunda baya zorlandı ve hatta 5 alternans üzerinde çalışmadı, alternans sayısını 2 ye indirmek zorunda kaldım. Ama bu sembolik işlemin sonunda, ortalama ve efektif değerin FORMÜLÜNÜ bize doğrudan veriyor. İşlemleri de bir live script içinde yaparak doğrudan sonuçları işlemler yapıldıkça görebiliyoruz.

Sembolik işlem yapmanın bir başka özelliği de, daha önce oluşturulmuş olan örnekler üzerinde çalışma yapılmıyor, Genel formül üzerinde işlem yapılıyor.

1654889528034.png
 
Değerli paylaşımın için teşekkür ederim abi.
Yeni başlayanlar/fikri olmayanlar için harika paylaşım olmuş.:)
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,789
Mesajlar
99,024
Üyeler
2,464
Son üye
s4met

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top