2010-11-24 34 views
6

Hem jiroskop hem de ivme ölçer verileri üzerinde bir miktar matematik yapıyorum ve sonuçta elde edilen verileri alçak geçiren filtrelemek istiyorum. Birisi Low Pass filtresi için bazı genel kodlar gönderebilir mi?LowPass Filtresi nasıl uygulanır?

+0

kod katsayıları oluşturmak ya da sadece filtreleme gerçekleştirmek istiyoruz:

hotpaw2 olarak

ve Goz açıklamak bu filtre hesaplama için çok basit ağırlıklı haddeleme ortalaması kullanılır? bir IIR veya bir FIR filtresi olmalı? – Guy

+0

Eh, ivmeölçer verilerini filtrelemek için Apple'ın kullandığı şeye benzeyen bir filtre istiyorum. Benim için sadece kodları çalışmıyor. – cgossain

+0

hangi şekilde çalışmıyor? – Guy

cevap

6

bir 1 sipariş IIR alçak geçiren filtre formunun olabilir:

output_value = rate * input_value + (1.0 - rate) * previous_output_value; 

hemen hemen içinde ne olduğunu Apple'ın AccelerometerGraph örneği. Siz roll-off ya da daha pürüzsüz sonuç elde etmek için zayıflama ve giriş verilerinin örnekleme oranını azaltmak için hangi frekansa (saniyede çok kaba bir şekilde sallar) bağlı olarak oran parametresini seçersiniz.

2

Düşük geçiş filtresi, yüksek frekansları çıkarmak için sonuçların düzgün bir şekilde düzeltilmesidir. En basit alçak geçiren filtre, n numunesinin birlikte ortalaması alınarak yapılan bir kutu filtredir. 2 numunelerin ortalamasını için

birlikte bunu kadar basittir:

sample[n] (sample[n] + sample[n + 1])/2; 
2

Apple'ın AccelerometerGraph örneği sizin için çok karmaşıksa, sınıfım için daha basit bir ivmeölçer örneği oluşturdum. Böylece here karşıdan yüklenebilir. Bu, ham ivmeölçer değerleri için basit bir alçak geçiren ve yüksek geçiren filtre uygular, daha sonra sonuçları ekrana kaydeder.

UIAccelerationValue lowPassFilteredXAcceleration = (currentXAcceleration * kLowPassFilteringFactor) + (previousLowPassFilteredXAcceleration * (1.0 - kLowPassFilteringFactor));