ความถี่ตัดของตัวกรองเฉลี่ยเคลื่อนที่คืออะไร


18

ฉันต้องการออกแบบตัวกรองค่าเฉลี่ยเคลื่อนที่ซึ่งมีความถี่การตัดที่ 7.8 Hz ฉันเคยใช้ตัวกรองค่าเฉลี่ยเคลื่อนที่มาก่อน แต่เท่าที่ฉันทราบพารามิเตอร์เดียวที่สามารถป้อนได้คือจำนวนคะแนนที่ต้องเฉลี่ย ... สิ่งนี้เกี่ยวข้องกับความถี่ที่ถูกตัดออกได้อย่างไร

ค่าผกผันของ 7.8 Hz คือ ~ 130 ms และฉันกำลังทำงานกับข้อมูลที่เก็บตัวอย่างที่ 1000 Hz นี่หมายความว่าฉันควรใช้ขนาดตัวกรองเฉลี่ยเคลื่อนที่ของตัวอย่าง 130 ตัวอย่างหรือมีอย่างอื่นที่ฉันหายไปหรือไม่


คุณควรกำหนดความเข้าใจของคุณเกี่ยวกับ "การตัดออก" ก่อน หากเป็นความถี่สุดท้ายด้านบน (ด้านล่าง) ซึ่งการตอบสนองของตัวกรองเป็นศูนย์ดังนั้นคำตอบจะเป็น "ไม่มี" เนื่องจากเคอร์เนลของตัวกรองค่าเฉลี่ยเคลื่อนที่มีการสนับสนุน จำกัด และคลื่น จำกัด เปลี่ยนเป็นภาพฟูริเยร์ที่ไม่มีที่สิ้นสุด
mbaitoff

ตัวกรองค่าเฉลี่ยเคลื่อนที่คือตัวกรองที่ใช้ในโดเมนเวลาเพื่อลบเสียงรบกวนและเพื่อความราบรื่น แต่ถ้าคุณใช้ตัวกรองค่าเฉลี่ยเคลื่อนที่ตัวเดียวกันในโดเมนความถี่สำหรับการแยกความถี่ประสิทธิภาพจะแย่ที่สุด ...... ในกรณีนั้นใช้ตัวกรองโดเมนความถี่

คำตอบ:


27

ตัวกรองค่าเฉลี่ยเคลื่อนที่ (บางครั้งเรียกว่า colloquially เป็นตัวกรองแบบ boxcar ) มีการตอบสนองแบบแรงกระตุ้นเป็นรูปสี่เหลี่ยมผืนผ้า:

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

หรือระบุไว้แตกต่างกัน:

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

โปรดจำไว้ว่าการตอบสนองความถี่ของระบบไม่ต่อเนื่องเท่ากับการแปลงฟูริเยร์แบบไม่ต่อเนื่องของการตอบสนองต่อแรงกระตุ้นของมันเราสามารถคำนวณได้ดังนี้:

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

เพื่อทำให้สิ่งนี้ง่ายขึ้นเราสามารถใช้สูตรที่รู้จักสำหรับผลรวมของเงื่อนไขแรกของชุดเรขาคณิตN :

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

สิ่งที่เราสนใจมากที่สุดสำหรับกรณีของคุณคือการตอบสนองต่อขนาดของตัวกรอง. ด้วยการปรับแต่งอย่างง่าย ๆ สองสามข้อเราสามารถทำได้ในรูปแบบที่ง่ายต่อการเข้าใจ:|H(ω)|

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

สิ่งนี้อาจดูไม่เข้าใจง่ายกว่านี้ อย่างไรก็ตามเนื่องจากตัวตนของออยเลอร์จำได้ว่า:

sin(ω)=ejωejωj2

ดังนั้นเราสามารถเขียนข้างต้นเป็น:

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

ดังที่ฉันได้กล่าวไปแล้วสิ่งที่คุณกังวลจริงๆคือขนาดของการตอบสนองความถี่ ดังนั้นเราสามารถหาขนาดของข้างบนเพื่อทำให้มันง่ายขึ้น:

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

|ejω|=1ω|xy|=|x||y|xy

ฟังก์ชั่นที่เกิดในวงเล็บสำคัญคือรูปแบบของการเป็นDirichlet เคอร์เนล บางครั้งเรียกว่าฟังก์ชันsinc เป็นครั้งคราวเพราะคล้ายกับฟังก์ชัน sincบ้างในลักษณะที่ปรากฏ แต่เป็นระยะแทน

อย่างไรก็ตามเนื่องจากคำจำกัดความของความถี่ cutoff ค่อนข้าง underspecified (-3 dB point? -6 dB point? sidelobe แรก? null) คุณสามารถใช้สมการข้างต้นเพื่อแก้ปัญหาที่คุณต้องการ โดยเฉพาะคุณสามารถทำสิ่งต่อไปนี้:

  1. |H(ω)|

  2. ωω=2πffsfs

  3. N


โดยการคำนวณของฉันนั่นคือ 'ใช่'? เท่าที่ฉันจะบอกได้ 130 ตัวอย่างดูเหมือนว่าจะพอดีกับ N กับω = 7.8 แต่ฉันไม่ใช่นักคณิตศาสตร์
CaptainProg

@CaptainProg: มี แต่คุณเท่านั้นที่พูดได้อย่างแน่นอน ฉันไม่แน่ใจว่าสิ่งที่คุณต้องการให้การตอบสนองขนาดอยู่ที่ความถี่ตัดยอด
Jason R

1
คุณช่วยกำหนดว่า n และ N คืออะไร? ตัวอย่างที่มีความถี่การสุ่มตัวอย่างที่กำหนดจะมีประโยชน์มาก นี่อาจฟังดูง่าย แต่คำถามนี้เป็นผลลัพธ์อันดับต้น ๆ สำหรับ "ความถี่การตัดยอดเฉลี่ยเคลื่อนที่" ดังนั้นฉันมั่นใจว่าจะมีผู้ชมจำนวนมากที่ไม่ได้สัมผัสกับคณิตศาสตร์หลังตัวกรอง
FvD

nx[n]N

10

NFcoN>=2F=f/fs

Fco=0.442947N21

สิ่งที่ตรงกันข้ามกับสิ่งนี้คือ

N=0.196202+Fco2Fco

สูตรนี้ถูกต้องแบบไม่มีสัญญาณสำหรับ N ขนาดใหญ่และมีข้อผิดพลาดประมาณ 2% สำหรับ N = 2 และน้อยกว่า 0.5% สำหรับ N> = 4

f=0

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

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

MA(Ω)22Ω

α=0.95264

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

MA(Ω)22=02πFco=Ωco

ทั้งหมดข้างต้นเกี่ยวข้องกับ -3dB ตัดความถี่เรื่องของการโพสต์นี้

บางครั้งมันเป็นเรื่องที่น่าสนใจที่จะได้รับข้อมูลการลดทอนใน stop-band ซึ่งเทียบได้กับลำดับที่ 1 ของ IIR Low Pass Filter (ขั้วเดี่ยว LPF) ที่ได้รับความถี่ตัด -3dB (เช่น LPF นั้นเรียกว่า integrator แบบรั่ว) มีเสาไม่ตรง DC แต่ใกล้กับมัน)

ความสัมพันธ์ระหว่างฟิลเตอร์ MA (FIR, N-1 ศูนย์) และ 1- โพล IIR LPF

F=k/N1/f1/f

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

หากต้องการได้รับตัวกรอง MA ที่มีความสามารถในการกรองสัญญาณรบกวนที่คล้ายกันกับตัวกรอง IIR นี้และตรงกับ 3dB ที่ตัดความถี่ให้เท่ากันเมื่อเปรียบเทียบสเปกตรัมทั้งสองเขาจะตระหนักได้ว่าแถบหยุดคลื่นของตัวกรอง MA สิ้นสุดลง ~ 3dB ด้านล่างของตัวกรอง IIR

เพื่อที่จะได้ระลอกคลื่นวงหยุดเดียวกัน (เช่นการลดทอนสัญญาณรบกวนเสียงเดียวกัน) เป็นตัวกรอง IIR สูตรสามารถแก้ไขได้ดังต่อไปนี้:

Fco,IIR=0.32N21

N=0.1024+Fco,IIR2Fco,IIR


ฉันเปลี่ยนสูตรเป็นรูปแบบลาเท็กซ์ โปรดตรวจสอบอีกครั้งและยืนยันว่าทั้งคู่ถูกต้อง ขอบคุณ
lennon310

ฉันเพิ่มความเป็นมาของการประมาณนี้ไว้ที่นี่dsp.stackexchange.com/a/28186/15347
Olli Niemitalo

2
เท่าที่ฉันจำได้ว่าฉันได้รับสูตรนี้โดยคำนึงถึงการปฏิบัติในทางปฏิบัติโดยใช้วิธีการเชิงตัวเลข (เช่น NSolve ใน Mathematica หรือบางอย่างที่คล้ายกันใน Matlab) ซึ่งควรจะถูกต้อง asymptotically สำหรับ N ขนาดใหญ่จำนวนที่คุณให้ประมาณ 3% ดังนั้นฉันไม่แน่ใจว่าจะพูดอะไร
Massimo

1
@ Massimo เราได้ทำงานอย่างหนักกับเรื่องนี้และการประมาณอื่น ๆ ในคำถามอื่น ๆ หากคุณต้องการตำแหน่งทศนิยมมากขึ้นนี่คือหมายเลขมายากลของคุณ: 0.442946470689452340308369
Olli Niemitalo

1
MA(Ω)=Sin(ΩN/2)/Sin(Ω/2)Omega=2πFMA(F)N+1/6F2(NN3)π21/2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.