Sinus dalgasının fonksiyonunu oluşturmak

Başlatan XX_CİHAN_XX, 06 Haziran 2014, 11:08:00

XX_CİHAN_XX



Yukarıdaki anlatıldığı gibi bir fonksiyon oluşturmak istiyorum.
Taylor açılımı ile gitsem sonuca ulaşabilir miyim? Hangi konu üzerine yoğunlaşmalıyım bu fonksiyonu oluşturmak için. Üniversitede bu konuları çok boşladık şimdi ceremesini çekiyoruz :(
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

kimlenbu


ferdem

Tam anlayamadım, karışıklık var gibi.
Eğer işaret sinüzoidal ise eşit zaman aralıklarındaki açı değimi eşit olmalı, bu 29 değerin eşit zaman aralıklarında alınmış açı değeri olduğuna emin misiniz?  Bu değerler eşit zaman aralıklarında alınmış genlik bilgisi olabilir, öyle mi? Nitekim bu açı değişimi sinüzoidalimizin açısal frekansıdır, A radyan/second veya B radyan/msec gibi bir değeri vardır.
Açısal frekansı belirlediğinizde(T süre içinde alınan iki örnekten olabilir) ileri bir noktayı hesaplamak çok kolay, örneğin açısal hız kabaca 100 derece/saniye şu anki açı değeri 11 derece ise 15 saniye sonra 11+15*100=1511 eder, mod 360 yaparsak, işaretimiz 71 derecede olacak.
Problem başka herhalde, üşenmedim(!) datayı matlabe geçirdim, çizilen data ile verilen data aynı değil herhalde?
Eğer problem frekansı bilinen bir sinüzoidali bir süre gözleyip T anındaki değerini kestirmek ise
1) Maximum(genlik) ve sıfır geçiş fark edilecek kadar gözlenir, geçişten T_süre sonraki değer T_süre mod periyot yapıldıktan sonra çıkan süre t_kalan genlik*sin(2*pi*f*t_kalan) benzeri bir hesap ile hesaplanabilir.
2) cos(wt) ve sin(wt) ile test edilerek işaretin fazı belirlenebilir... fazı bilinen sinüzoidalin T süre sonraki değeri bulunabilir.
Anladığım kadarıyla hızlıca yazdım, detay olursa daha iyi bir çözüm olabilir.



XX_CİHAN_XX

#3
Alıntı yapılan: ferdem - 06 Haziran 2014, 12:20:34
Tam anlayamadım, karışıklık var gibi.
Eğer işaret sinüzoidal ise eşit zaman aralıklarındaki açı değimi eşit olmalı, bu 29 değerin eşit zaman aralıklarında alınmış açı değeri olduğuna emin misiniz?  Bu değerler eşit zaman aralıklarında alınmış genlik bilgisi olabilir, öyle mi? Nitekim bu açı değişimi sinüzoidalimizin açısal frekansıdır, A radyan/second veya B radyan/msec gibi bir değeri vardır.
Açısal frekansı belirlediğinizde(T süre içinde alınan iki örnekten olabilir) ileri bir noktayı hesaplamak çok kolay, örneğin açısal hız kabaca 100 derece/saniye şu anki açı değeri 11 derece ise 15 saniye sonra 11+15*100=1511 eder, mod 360 yaparsak, işaretimiz 71 derecede olacak.
Problem başka herhalde, üşenmedim(!) datayı matlabe geçirdim, çizilen data ile verilen data aynı değil herhalde?
Eğer problem frekansı bilinen bir sinüzoidali bir süre gözleyip T anındaki değerini kestirmek ise
1) Maximum(genlik) ve sıfır geçiş fark edilecek kadar gözlenir, geçişten T_süre sonraki değer T_süre mod periyot yapıldıktan sonra çıkan süre t_kalan genlik*sin(2*pi*f*t_kalan) benzeri bir hesap ile hesaplanabilir.
2) cos(wt) ve sin(wt) ile test edilerek işaretin fazı belirlenebilir... fazı bilinen sinüzoidalin T süre sonraki değeri bulunabilir.
Anladığım kadarıyla hızlıca yazdım, detay olursa daha iyi bir çözüm olabilir.


@ferdem hocam ilginiz için teşekkür ederim. O değerler dediğiniz gibi açısal değerler değil genlik değerleri. Orada bir karışıklık olmuş.
Yapmaya çalıştığım şey; örneğin aldığım son 4 genlik ölçümünden (her ölçüm arası 5mS) 24 üncü ölçümde elde edeceğim genlik değerini bulmak. Yani her 5mS de bir 100mS sonra sinyal hangi genliğe olaşacak bunu bilmek istiyorum. Sinyal doğrusal olsaydı ax+b den işim çok kolaydı ama sinusoidal olunca fonksiyon oluşturamakta zorlanıyorum.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

ferdem

İşaretin ideal bir sinüzoidal olduğunu düşünelim. İdeal bir sinüzoidalin bir süre sonraki değerini kestirmek için genlik, frekans(periyot) ve fazının belirlenmesi gerekir. Bunlar örnekleme sonrası DFT yaparak belirlenebilir ancak şu şartlar olmalı:
1) Örnekleme sıklığınız sinyal frekansının teorik en az iki katı
2) Örnekleme süresi ulaşmak istediğiniz çözünürlük frekansının en az bir periyodu kadar olmalı.
Bu durumda, 5ms örnekleme periyodu ve 20ms gözlem süresiyle DFT ile yapacağınız kestirimde 200Hz e kadar bir sinyali +-25Hz hata ile belirleyebiliyorsunuz, yetebilir mi! DFT ile buradan bir şey bulunamaz. Frekansa ve çözünürlük ihtiyacına göre örnekleme sıklığı ve süresi arttırılmalı. Bu parametrelerin belirlenebilmesi için DFT tek yöntem değil, internette biraz araştırdım... ilginçtir tam sizin probleme denk düşen bir içeriğe rastladım ama içeriğe erişim yok:
http://www.tandfonline.com/doi/abs/10.1080/00207217.2011.582452#.U5Goufl_s8o

Frekansı tam bildiğimizi varsaydığımda, iki örnek üzerinden işaretin parametreleri (genlik, faz) bulunabilir mi diye baktım. İki örnek alarak gittim, zor da olsa ulaştım:
A*cos(wt+fi)=g1
A*cos(w(t+t2)+fi)=g2 iki denklemden Aşağıdaki arccos difference eşitliği kullanarak A ve fi değişkenlerine ulaşılabiliyor.
http://www.rapidtables.com/math/trigonometry/arccos.htm
t1-t2 arası kritik bir zaman, olayını anlayamadım ancak bazı değerlerde iyi kestiremiyor, inceleyemedim.
Matlab kod ve ekran görüntüsü vereyim, konunun üzerinde durmak istiyorum, devamını ilerde konuşabiliriz.
clc
clear
close all
f=100;
t=0:1e-6:100e-3;
y=7*cos(2*pi*f*t+1.5);
plot(t,y);

length(t);

index1=59000
index2=index1+2000

t1=t(index1)%ornek1
t2=t(index2)%ornek2
dt=t2-t1;
g1=y(index1)
g2=y(index2)


A=sqrt(abs(2*cos(2*pi*f*dt)*g1*g2-g2^2-g1^2/[(1-cos(2*pi*f*dt)*cos(2*pi*f*dt))]))
fi=acos(g1/A)-2*pi*f*t1;
fi=mod(fi,2*pi)

hold on
y_estimated=A*cos(2*pi*f*t+fi);
plot(t,y_estimated,'--r');
legend('Orjinal','Kestirim')
hold on %noktalari işaretle
plot(t1+i*g1,'*r')
plot(t2+i*g2,'*r')


Çıktı:
A =

    6.8166


fi =

    1.4771


XX_CİHAN_XX

Hocam valla elinize sağlık ancak bir sorun var ki o da sinüsün frekansını ve genliğini önceden bilemiyoruz :)
Ancak şunu biliyoruz söz konusu sinüs oldukça düşük frekanslarda geliyor ( <1Hz gibi )
Bunun için bende bu sinüsü küçük küçük parçalara bölüp küçük küçük bir sürü doğru parçaları çizerek estimate etmeyi düşündüm ve araştırmalarım neticesinde tam olarak bu işe uygun olan Linear Regression metodunu buldum. Bugün bu metod ile 4 örnek girip 14 üncü örneği estimate ettirerek sonuçları gözlemledim ve ilginç bir şekilde başarılı oldu.



Burada mavi olan orjinal sinyal, kırmızı olan ise regresyon ile hesaplanan sinyal. Üst üste bire bir neredeyse çakışıyor :)

http://en.wikipedia.org/wiki/Linear_regression

Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

barisertekin

#6
Lineer regresyon analizi biçilmiş kaftan olmuş. Bende x,y noktalarına en yakın fonksiyonu mx+b şeklinde bulmak için kullanmıştım.

Eğri Uydurma Ve En Küçük Kareler Yöntemi diye de biliniyor. En Küçük Kareler Yöntemi

http://barisertekin.com/Uni/NumericalAnalysis/RegressionAnalysis/