Kalman Filtresi

Başlatan mesutyanik, 09 Nisan 2016, 16:21:09

mesutyanik

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.

Emre_Tuncay_

http://bilgin.esme.org/BitsBytes/KalmanFilterforDummies.aspx
burada kalman ile alakalı hesaplamalar var ben ivme sensöründe kullanmıştım

zengdai

//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 :)

mesutyanik

Ç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.

maodon

bant geçirip  o bantı yukseltmek istiyorsak nasıl olur

zengdai

#5
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
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
tuning gibi bir ifade kullanıyor