Berapa frekuensi cut-off filter moving average?

18

Saya perlu merancang filter rata-rata bergerak yang memiliki frekuensi cut-off 7,8 Hz. Saya telah menggunakan filter rata-rata bergerak sebelumnya, tetapi sejauh yang saya ketahui, satu-satunya parameter yang dapat dimasukkan adalah jumlah titik yang dirata-rata ... Bagaimana ini bisa berhubungan dengan frekuensi cut-off?

Kebalikan dari 7,8 Hz adalah ~ 130 ms, dan saya bekerja dengan data yang diambil sampel pada 1000 Hz. Apakah ini menyiratkan bahwa saya harus menggunakan ukuran jendela filter rata-rata bergerak dari 130 sampel, atau ada hal lain yang saya lewatkan di sini?

CaptainProg
sumber
Pertama-tama Anda harus mendefinisikan pemahaman Anda tentang "cut-off". Jika ini adalah frekuensi terakhir di atas (di bawah) yang respons filternya nol, maka jawabannya adalah "tidak ada", karena kernel dari filter rata-rata bergerak memiliki dukungan yang terbatas, dan wavelet yang terbatas berubah menjadi gambar fourier yang tak terbatas.
mbaitoff
Filter moving average adalah filter yang digunakan dalam domain waktu untuk menghilangkan noise yang ditambahkan dan juga untuk tujuan perataan tetapi jika Anda menggunakan filter moving average yang sama dalam domain frekuensi untuk pemisahan frekuensi maka kinerjanya akan terburuk ...... jadi dalam hal ini gunakan filter domain frekuensi

Jawaban:

27

Filter moving average (kadang-kadang dikenal bahasa sehari-hari sebagai filter gerbong ) memiliki respon impuls persegi panjang:

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

Atau, dinyatakan berbeda:

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

Mengingat bahwa respons frekuensi sistem waktu diskrit sama dengan transformasi Fourier waktu diskrit dari respons impulsnya, kita dapat menghitungnya sebagai berikut:

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

Untuk menyederhanakan ini, kita dapat menggunakan rumus yang diketahui untuk jumlah dari istilah pertama dari deret geometriN :

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

Yang paling menarik bagi kasus Anda adalah besarnya respons filter,. Menggunakan beberapa manipulasi sederhana, kita bisa mendapatkannya dalam bentuk yang lebih mudah dipahami:|H(ω)|

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

Ini mungkin terlihat tidak mudah dipahami. Namun, karena identitas Euler , ingat bahwa:

sin(ω)=ejωejωj2

Karena itu, kita dapat menulis di atas sebagai:

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

Seperti yang saya katakan sebelumnya, apa yang Anda benar-benar khawatirkan adalah besarnya respon frekuensi. Jadi, kita dapat mengambil besarnya di atas untuk menyederhanakannya lebih lanjut:

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

Catatan: Kami dapat menghapus syarat eksponensial karena tidak mempengaruhi besarnya hasil; untuk semua nilai . Sejakuntuk dua bilangan kompleks hingga dan , kita dapat menyimpulkan bahwa keberadaan suku eksponensial tidak memengaruhi respons besaran keseluruhan (sebagai gantinya, mereka memengaruhi respons fase sistem).ω | x y | = | x | | y | x y|ejω|=1ω|xy|=|x||y|xy

Fungsi yang dihasilkan di dalam kurung magnitude adalah bentuk dari kernel Dirichlet . Kadang-kadang disebut fungsi sinc periodik , karena menyerupai fungsi sinc agak dalam penampilan, tetapi sebagai periodik.

Lagi pula, karena definisi frekuensi cutoff agak kurang spesifik (-3 dB point? -6 dB point? Sidelobe null pertama?), Anda dapat menggunakan persamaan di atas untuk menyelesaikan apa pun yang Anda butuhkan. Secara khusus, Anda dapat melakukan hal berikut:

  1. Setke nilai yang sesuai dengan respons filter yang Anda inginkan pada frekuensi cutoff.|H(ω)|

  2. Atur sama dengan frekuensi cutoff. Untuk memetakan frekuensi waktu kontinu ke domain waktu diskrit, ingat bahwa , di mana adalah laju sampel Anda.ω = 2 π fω fsω=2πffsfs

  3. Temukan nilai yang memberi Anda kesepakatan terbaik antara sisi kiri dan kanan persamaan. Itu harus menjadi panjang rata-rata bergerak Anda.N

Jason R
sumber
Menurut hemat saya, itu 'ya'? Sejauh yang saya tahu, 130 sampel tampaknya cocok N dengan ω = 7,8, tapi saya bukan ahli matematika.
CaptainProg
@CaptainProg: Hanya Anda yang bisa mengatakan dengan pasti; Saya tidak yakin apa yang Anda inginkan respon besarnya berada pada frekuensi cutoff.
Jason R
1
Bisakah Anda mendefinisikan apa itu n dan N? Contoh dengan frekuensi sampling yang diberikan juga akan sangat membantu. Ini mungkin terdengar sederhana, tetapi pertanyaan ini adalah hasil teratas untuk "memindahkan frekuensi cutoff rata-rata", jadi saya yakin akan ada banyak pemirsa lain yang telah kehilangan kontak dengan matematika di balik filter.
FvD
@FvD adalah indeks sampel untuk sinyal , seperti yang biasanya digunakan untuk sinyal waktu diskrit. didefinisikan dalam persamaan pertama di atas. Jika saya mendapat kesempatan, saya dapat menambahkan contoh, tetapi saya curiga bahwa siapa pun yang memilih untuk merancang filter untuk memenuhi frekuensi cutoff tertentu dapat mengikuti matematika. x [ n ] Nnx[n]N
Jason R
10

Jika adalah panjang rata-rata bergerak, maka frekuensi cut-off perkiraan (valid untuk ) dalam frekuensi normal adalah:F c o N > = 2 F = f / f sNFcoN>=2F=f/fs

Fco=0.442947N21

Kebalikan dari ini adalah

N=0.196202+Fco2Fco

Formula ini secara asimptotik benar untuk N besar, dan memiliki sekitar 2% kesalahan untuk N = 2, dan kurang dari 0,5% untuk N> = 4.

PS: Setelah dua tahun, akhirnya disusul pendekatan apa. Hasilnya didasarkan pada perkiraan spektrum amplitudo MA sekitar sebagai parabola (Seri orde 2) sesuai denganf=0

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

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

yang dapat dibuat lebih tepat di dekat persimpangan nol dengan mengalikan dengan koefisienMA(Ω)22Ω

α=0.95264

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

Solusi memberikan hasil di atas, di mana .MA(Ω)22=02πFco=Ωco

Semua hal di atas berkaitan dengan frekuensi cut -3dB, subjek tulisan ini.

Kadang-kadang meskipun menarik untuk mendapatkan profil pelemahan dalam stop-band yang dapat dibandingkan dengan filter Low Pass Filter IIR 1R (single LPF tiang) dengan frekuensi terputus -3dB (LPF seperti itu juga disebut integrator bocor, memiliki tiang tidak persis di DC tetapi dekat dengan itu).

hubungan antara filter MA (FIR, N-1 nol) dan 1F kutub IIR

Faktanya, MA dan LPF orde 1 memiliki kemiringan -20dB / dekade pada band stop (satu membutuhkan N lebih besar daripada yang digunakan dalam gambar, N = 32, untuk melihat ini), tetapi MA memiliki nol spektral pada dan evelope, filter IIR hanya memiliki profil .F=k/N1/f1/f

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

Jika seseorang ingin mendapatkan filter MA dengan kemampuan filter noise yang sama dengan filter IIR ini, dan mencocokkan frekuensi pemutusan 3dB menjadi sama, setelah membandingkan dua spektrum, ia akan menyadari bahwa riak band berhenti dari filter MA berakhir. ~ 3dB di bawah filter IIR.

Untuk mendapatkan riak stop-band yang sama (yaitu redaman daya derau yang sama) seperti filter IIR, rumus dapat dimodifikasi sebagai berikut:

Fco,IIR=0.32N21

N=0.1024+Fco,IIR2Fco,IIR

Massimo
sumber
Saya mengubah formula Anda ke format lateks. Harap periksa dan pastikan keduanya benar. Terima kasih.
lennon310
Saya menambahkan derivasi dari pendekatan ini di sini dsp.stackexchange.com/a/28186/15347
Olli Niemitalo
2
Sejauh yang saya ingat saya mendapatkan rumus ini dengan pertimbangan pragmatis dalam pikiran, dengan menggunakan metode numerik (baik NSolve di Mathematica atau sesuatu yang serupa di Matlab), yang seharusnya asymptotically benar untuk N. besar. Jumlah yang Anda berikan adalah sekitar 3% untuk diskon , jadi saya tidak yakin harus berkata apa.
Massimo
1
@ Massimo kami melakukan banyak pekerjaan pada ini dan perkiraan lainnya dalam pertanyaan lain. Jika Anda memerlukan lebih banyak tempat desimal, ini adalah nomor ajaib Anda: 0.442946470689452340308369
Olli Niemitalo
1
Saya menemukan kembali skrip Mathematica di mana saya menghitung cut off untuk beberapa filter, termasuk yang MA. Hasilnya didasarkan pada perkiraan spektrum MA sekitar f = 0 sebagai parabola menurut ; ; . Dan turunkan persimpangan dengan dari sana. O m e g a = 2 * π * F M A ( F ) N + 1 / 6 * F 2( N - N 3 ) π 2 1MA(Ω)=Sin(ΩN/2)/Sin(Ω/2)Omega=2πFMA(F)N+1/6F2(NN3)π21/2
Massimo