Arkadaşlar merhabalar;
Sinyal işleme üzerine çalışıyorum elimde hareket halinde tartım yapan bir sistemin load cellinden alınmış olan gürültülü bir veri var. Ben bu gürültülü veriyi adaptif filtreler ile süzmek istiyorum. Adaptif filtre çeşidi olarak önceliğim kalman filtresi ama diğer adaptif filtreleme algoritmaları da benim işimi görebilir. Yardımlarınızı bekliyorum.
http://bilgin.esme.org/BitsBytes/KalmanFilterforDummies.aspx (http://bilgin.esme.org/BitsBytes/KalmanFilterforDummies.aspx)
burada kalman ile alakalı hesaplamalar var ben ivme sensöründe kullanmıştım
//kodlar pic ccs ile yazıldı
//ham_deger=sensörden aldığın ham değer
//formülsel ifadelerde geçen A ve H gibi değerler 1 alındı.
//r değeri yine tahmini bir değer atıyorsun 0.5 almıştım. değişitirip etkisini görebilirsin
//en sonda güncellediğin pk ve xk değerlerini bir sonraki aşamada kullanmak için xk[0],pk[0] ya atıyorsun
// programın başında pk[0]=10000;xk[0]=200; değerlerini verdim. Xk sensörün ilk çıktısı gibi farzet,
//değişitirip etkisini gör. Çok iyi hatırlamıyorum
pk[0]=pk[0]+0.0004;//0.0004 matematiksel formüllerde ifade edilen Q değeridir.Tahmini değerdir. Değiştirip etkisini //görebilirsin.
kalmank=(float)((pk[0])/(pk[0]+r));//kalmank kalman katsayısı oluyor
xk[1]=(float)xk[0]+(float)kalmank*(float)((float)ham_deger-(float)xk[0]);//çıktının filtreli hali
pk[1]=(1-kalmank)*pk[0];//bir sonrakinde kullanmak için güncelliyor pk yı
pk[0]=pk[1];
xk[0]=xk[1];
//Allah muvaffak etsin. Dua etmeyi unutma :)
Çok teşekkür ederim kafama takılan bir nokta var ben buradaki q ve r değerlerinin matematiksel olarak nasıl hesaplanacağını bilmek istiyorum. Çünkü onlar olmayınce filtre düzgün çalışmıyor. Onların nasıl hesaplandığını da açıklamam gerekiyor.
bant geçirip o bantı yukseltmek istiyorsak nasıl olur
http://home.wlu.edu/~levys/kalman_tutorial/ (http://home.wlu.edu/~levys/kalman_tutorial/)
burda A dan z ye hepsini anlatıyor ben burdan öğrenmiştim. hatta interaktif grafikler var. değerleri değiştirip etkilerini grafik üstünde görebilirsin. tek sensör filtreleme olarak kullanacaksan q ve r değerlerini rastgele atadığını neredeyse iyi hatırlıyorum.
http://www.ibrahimcayiroglu.com/Dokumanlar/Makale_BilgiPaylasim/(1-2012)-Kalman_Filtresi_Ve_Bir_Programlama_Ornegi-Ibrahim_CAYIROGLU.pdf (http://www.ibrahimcayiroglu.com/Dokumanlar/Makale_BilgiPaylasim/(1-2012)-Kalman_Filtresi_Ve_Bir_Programlama_Ornegi-Ibrahim_CAYIROGLU.pdf)
burda ise şöyle bir ifade kullanmış "Adım 2'deki denklemlerde ise en zor belirlenecek katsayılar R ve Q dur. R'yi bulmak daha kolaydır. Çünkü biz genellikle etraftaki gürültüden çoğunlakla eminizdir. Fakat Q değerini ise ortaya çıkarmak o kadar kolay değildir. Ve bu aşamada özel bir metod veremiyoruz. "
şu yayınada bak isytersen Filter Parameters and Tuning başlığı altında
https://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf (https://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf)
tuning gibi bir ifade kullanıyor