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ı.
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.
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.
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:
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.
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ı.
Kod:
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.
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.
Kod:
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)
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:
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.