Hareketli Ortalama Filtresi (Moving Average Filter), sinyal işleme ve veri analizi alanlarında en çok tercih edilen basit ve etkili filtrelerden biridir. Gürültülü verilerin pürüzsüzleştirilmesi, ani değişimlerin yumuşatılması ve sensör okumalarının stabilize edilmesi gibi birçok uygulama alanında kullanılır. Özellikle gömülü sistemlerde, mikrodenetleyicilerde ve gerçek zamanlı uygulamalarda, C dili ile kolayca uygulanabilir olması sayesinde oldukça popülerdir.
Hareketli Ortalama Filtresi Nedir?
Kısaca, hareketli ortalama filtresi, belirli bir pencere (örneğin N örnek) içerisindeki verilerin aritmetik ortalamasını alarak yeni bir çıktı üretir. Böylece, kısa süreli gürültüler ve ani değişimler filtrelenmiş olur.
Matematiksel olarak:
Y[n] = (X[n] + X[n-1] + ... + X[n-(N-1)]) / N
Burada:
-
Y[n]: Filtrelenmiş çıktı
-
X[n]: En yeni giriş değeri
-
N: Pencere boyutu (window size)
Avantajları ve Dezavantajları
Avantajlar:
-
Basit ve hızlı algoritma
-
Bellek ve işlemci gereksinimi düşük
-
Gerçek zamanlı uygulamalara uygun
Dezavantajlar:
-
Ani değişimleri geciktirir (faz kayması)
-
Büyük pencerelerde tepki yavaştır
-
Herkese uyan tek boyutlu çözüm değildir; pencere boyutu dikkatle seçilmelidir
C Dilinde Moving Average Filter Nasıl Uygulanır?
Aşağıda, hareketli ortalama filtresinin C dilinde farklı şekillerde uygulanışı anlatılmaktadır.
1. Temel Uygulama: Döngüyle Ortalama Alma
Eksisi:
Her yeni örnekte tüm pencereyi toplar, bu da işlemciyi yorar.
2. Kayan Pencere ile Optimizasyon (Dairesel Buffer Kullanımı)
Dairesel (circular) buffer ve kayan toplam yaklaşımıyla işlem yükü azaltılabilir.
Kullanımı:
Avantajı:
-
Her örnek için sadece iki toplama/çıkarma işlemi gerekir.
-
Özellikle gömülü sistemlerde çok daha hızlıdır.
3. Uygulama Alanları
-
Sensör verilerinin düzeltilmesi (ör. sıcaklık, ivmeölçer)
-
Finansal zaman serilerinde veri yumuşatma
-
Gürültülü sinyal filtreleme (ör. ADC verisi)
-
Otomotivde, tıbbi cihazlarda, endüstriyel kontrol sistemlerinde
Pencere Boyutu (Window Size) Nasıl Seçilmeli?
-
Küçük pencere (örn. 3–5): Ani değişimlere daha duyarlı, az gecikme.
-
Büyük pencere (örn. 20–50): Daha yumuşak sonuç, daha fazla gecikme.
Kullanım amacınıza ve verinizin doğasına göre pencere boyutunu dikkatli seçmelisiniz.
Kodun Tamamı: Basit Moving Average Filter Kütüphanesi
Sonuç
Hareketli ortalama filtresi, basitliği ve etkililiğiyle öne çıkan bir filtreleme yöntemidir. C dilinde uygulanması da oldukça kolaydır. Kodunuzu ve pencere boyutunuzu ihtiyacınıza göre optimize ederek, birçok gerçek zamanlı uygulamada başarılı sonuçlar elde edebilirsiniz.
Sen de uygulaman için yukarıdaki örnekleri kolayca entegre edebilirsin!
Hiç yorum yok:
Yorum Gönder