Hareketli bir ortalama filtrenin kesme frekansı nedir?


18

Kesme frekansı 7,8 Hz olan hareketli bir ortalama filtre tasarlamam gerekiyor. Daha önce hareketli ortalama filtreleri kullandım, ancak bildiğim kadarıyla, beslenebilecek tek parametre ortalaması alınacak nokta sayısıdır ... Bu bir kesme frekansı ile nasıl ilişkili olabilir?

7.8 Hz'nin tersi ~ 130 ms'dir ve 1000 Hz'de örneklenmiş verilerle çalışıyorum. Bu, 130 örneklik hareketli ortalama filtre penceresi boyutu kullanmam gerektiği anlamına mı geliyor, yoksa burada eksik olduğum başka bir şey var mı?


Önce "kesme" anlayışınızı tanımlamalısınız. Bir filtrenin tepkisinin sıfır olduğu (aşağıda) son frekans ise, cevap "yok" olacaktır, çünkü hareketli bir ortalama filtrenin çekirdeği sonlu bir desteğe sahiptir ve sonlu dalgacıklar sonsuz dörtlü görüntüye dönüşür.
mbaitoff

Hareketli ortalama filtresi, eklenen gürültüyü gidermek ve aynı zamanda yumuşatma amacıyla zaman alanında kullanılan filtredir, ancak frekans alanında aynı hareketli ortalama filtresini frekans ayırma için kullanırsanız, performans en kötü olacaktır ... bu durumda frekans alan adı filtreleri kullanın

Yanıtlar:


27

Hareketli ortalama filtresinin (bazen bir vagon filtresi olarak bilinir ) dikdörtgen bir dürtü yanıtı vardır:

h[n]=1Nk=0N1δ[nk]

Ya da farklı şekilde ifade etti:

h[n]={1N,0n<N0,otherwise

Ayrık zamanlı bir sistemin frekans yanıtının dürtü yanıtının ayrık zamanlı Fourier dönüşümüne eşit olduğunu hatırlayarak, aşağıdaki gibi hesaplayabiliriz:

H(ω)=n=x[n]ejωn=1Nn=0N1ejωn

Bunu basitleştirmek için, bir geometrik serinin ilk terimlerinin toplamıN için bilinen formülü kullanabiliriz :

n=0N1ejωn=1ejωN1ejω

Sizin durumunuz için en çok ilgilendiğimiz şey, filtrenin büyüklük yanıtıdır . Birkaç basit manipülasyon kullanarak, bunu daha kolay anlaşılır bir biçimde elde edebiliriz:|H(ω)|

H(ω)=1Nn=0N1ejωn=1N1ejωN1ejω=1NejωN/2ejω/2ejωN/2ejωN/2ejω/2ejω/2

Bu anlaşılması daha kolay görünmeyebilir. Ancak, Euler kimliğinden dolayı şunu hatırlayın:

sin(ω)=ejωejωj2

Bu nedenle, yukarıdakileri şöyle yazabiliriz:

H(ω)=1NejωN/2ejω/2j2sin(ωN2)j2sin(ω2)=1NejωN/2ejω/2sin(ωN2)sin(ω2)

Daha önce de belirttiğim gibi, gerçekten endişelendiğiniz şey frekans yanıtının büyüklüğüdür. Böylece, daha da basitleştirmek için yukarıdakilerin büyüklüğünü alabiliriz:

|H(ω)|=1N|sin(ωN2)sin(ω2)|

Not: Üstel terimleri kaldırabiliriz, çünkü sonucun büyüklüğünü etkilemezler; tüm değerleri için co . Beri | x y | = | x | | y | x ve y gibi sonlu iki karmaşık sayı için, üstel terimlerin varlığının genel büyüklük yanıtını etkilemediği sonucuna varabiliriz (bunun yerine sistemin faz yanıtını etkiler).|ejω|=1ω|xy|=|x||y|xy

Büyüklük parantezlerinin içindeki sonuç işlevi, bir Dirichlet çekirdeğinin bir şeklidir . Bazen periyodik bir içten işlev olarak adlandırılır , çünkü içsel işleve görünüşte biraz benzemektedir, bunun yerine periyodiktir.

Her neyse, kesme frekansının tanımı biraz az belirtildiği için (-3 dB noktası? -6 dB noktası? İlk sidelobe null?), İhtiyacınız olan her şeyi çözmek için yukarıdaki denklemi kullanabilirsiniz. Özellikle, aşağıdakileri yapabilirsiniz:

  1. Set kesme frekansında istediğiniz filtre yanıtına karşılık gelen değere ayarlayın.|H(ω)|

  2. kesme frekansına eşit olarak ayarlayın . Sürekli zaman frekansını ayrık zamanlı etki alanına eşlemek için ω = 2 π fω , buradafsörnekleme oranınızdır.ω=2πffsfs

  3. Denklemin sol ve sağ tarafları arasında en iyi uyumu sağlayan değerini bulun . Hareketli ortalamanızın uzunluğu bu olmalıdır.N


Benim düşünceme göre, bu bir 'evet' mi? Anlayabildiğim kadarıyla, 130 numune N = 7.8 = 7.8 ile uyuyor gibi görünüyor, ama ben matematikçi değilim.
CaptainProg

@CaptainProg: Sadece kesin olarak söyleyebilirsin; Büyüklük tepkisinin kesme frekansında olmasını istediğinizden emin değilim.
Jason R

1
N ve N'nin ne olduğunu tanımlayabilir misiniz? Belirli bir örnekleme sıklığına sahip bir örnek de çok yardımcı olacaktır. Bu basit gelebilir, ancak bu soru "hareketli ortalama frekansı" için en iyi sonuçtur, bu yüzden filtrelerin arkasındaki matematikle temastan düşmüş birçok izleyici olacağından eminim.
FvD

@FvD , tipik olarak ayrık zamanlı sinyaller için kullanılan x [ n ] sinyali için örnek indekstir . N , yukarıdaki birinci denklemde tanımlanmıştır. Bir şansım olursa bir örnek ekleyebilirim, ancak belirli bir kesme frekansını karşılamak için bir filtre tasarlamayı seçen herkesin matematiği takip edebileceğinden şüpheleniyorum. nx[n]N
Jason R

10

Eğer hareketli ortalama, daha sonra yaklaşık bir kesme frekansının uzunluğu F c O (geçerli N > = 2 normalleştirilmiş bir frekans olarak) F = f / f s isimli:NFcoN>=2F=f/fs

Fco=0.442947N21

Bunun tersi

N=0.196202+Fco2Fco

Bu formül büyük N için asemptotik olarak doğrudur ve N = 2 için yaklaşık% 2, N> = 4 için% 0.5'in altında hataya sahiptir.

PS: İki yıl sonra, nihayet yaklaşım neydi takip etti. Sonuç, çevresindeki MA genlik spektrumunun bir parabol (2. dereceden Seri) olarakf=0

MA(Ω)=Sin(ΩN/2)Sin(Ω/2)

MA(Ω)1+(124N224)Ω2

sıfır geçişinin yakınında daha kesin olarak yapılabilirMA(Ω)22Ω

α=0.95264

MA(Ω)1+0.907523(124N224)Ω2

çözeltisiMA(Ω)22=02πFco=Ωco

Yukarıdakilerin tümü, bu yazının konusu olan -3dB kesme frekansı ile ilgilidir.

Bazen belirli bir -3dB kesme frekansına sahip birinci dereceden IIR Düşük Geçişli Filtre (tek kutuplu LPF) ile karşılaştırılabilir bir durdurma bandında bir zayıflama profili elde etmek ilginç olsa da (böyle bir LPF'ye sızdıran entegratör denir, direğe tam olarak değil DC'ye yakın bir kutup olması).

MA filtresi (FIR, N-1 sıfır) ve 1 kutuplu IIR LPF arasındaki ilişkiler

F=k/N1/f1/f

HIIR=1Exp(Ωco)1Exp(Ωco)Exp(jΩ)

Bu IIR filtresi ile benzer gürültü filtreleme özelliklerine sahip bir MA filtresi elde etmek istiyorsa ve 3dB kesme frekanslarını aynı olacak şekilde eşleştirirse, iki spektrumu karşılaştırdıktan sonra, MA filtresinin durdurma bandı dalgalanmasının sona erdiğini fark eder. IIR filtresinin ~ 3dB altında.

IIR filtresi ile aynı durdurma bandı dalgalanmasını (yani aynı gürültü gücü zayıflatmasını) elde etmek için formüller aşağıdaki gibi değiştirilebilir:

Fco,IIR=0.32N21

N=0.1024+Fco,IIR2Fco,IIR


Formülünüzü lateks biçimine değiştirdim. Lütfen her ikisinin de doğru olduğunu iki kez kontrol edin ve onaylayın. Teşekkürler.
lennon310

Bu yaklaşımın bir türevini buraya ekledim dsp.stackexchange.com/a/28186/15347
Olli Niemitalo

2
Hatırladığım kadarıyla, bu formülü büyük N için asimptotik olarak doğru olması gereken sayısal yöntemler (Mathematica'da NSolve veya Matlab'da benzer bir şey) göz önünde bulundurarak pragmatik kaygılarla türettim. Verdiğiniz sayı yaklaşık% 3 kapalı , bu yüzden ne diyeceğimi bilmiyorum.
Massimo

1
@Massimo, bu ve diğer sorudaki diğer yaklaşımlar üzerinde çok çalıştık. Daha fazla ondalık basamağa ihtiyacınız varsa, bu sihirli numaranız: 0.442946470689452340308369
Olli Niemitalo

1
Mbir(Ω)=Sbenn(Ω*N-/2)/Sbenn(Ω/2)Ömegbir=2*π*FMbir(F)N-+1/6*F2*(N--N-3)*π21/2
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.