การใช้อัลกอริทึมของ Goertzel ให้ความละเอียดของความถี่ดีขึ้นจริงหรือ


19

ฉันกำลังอ่านบทความนี้และฉันสับสนเล็กน้อยจากการใช้ 'การแก้ไขความถี่' แบบเสรีนิยมของผู้เขียนเกี่ยวกับอัลกอริทึมของ Goertzel

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

ตัวอย่างเช่นสมมติว่าคือ 100 KHz (คงที่) และจำนวนตัวอย่างข้อมูลคือ 10000 (เช่นแก้ไข) หากฉันคำนวณ FFT ปกติโดยที่ความยาว FFT เป็นความละเอียดความถี่ของฉันคือตามที่คาดไว้และจะเท่ากับ 10 Hz ซึ่งหมายความว่าช่องเก็บเงินของฉันคั่นด้วย 10 Hz จาก -50,000 Hz ถึง 50,000 Hz N N F sFsยังไม่มีข้อความยังไม่มีข้อความFsยังไม่มีข้อความ

ตอนนี้ให้เราบอกว่าฉันต้องการใช้อัลกอริทึม Geortzel เพื่อดูความถี่ในช่วงของการพูด 20,000-21,000 เฮิร์ตซ์ หากฉันใช้เดียวกันสำหรับจำนวนตัวอย่างและใช้เดียวกันสำหรับขนาด FFT ของฉันการแก้ไขความถี่ของฉันคืออะไร ยัง 10 เฮิร์ตหรือไม่ หรือว่า Hzยังไม่มีข้อความยังไม่มีข้อความ21,000-20,00010000=0.1

ฉันมีความรู้สึกว่าฉันไม่ได้เพิ่มความละเอียดความถี่ของฉันมากพอ ๆ กับการสอดแทรกจุดบนกลีบหลักโดยใช้เดียวกันในการประเมินความถี่จาก 21,000 ถึง 20,000 เท่าที่ฉันทำจาก 0 ถึง 50,000ยังไม่มีข้อความ

นี่เป็นความเข้าใจที่ถูกต้องหรือไม่

คำตอบ:


18

ความเข้าใจของคุณถูกต้อง

อัลกอริธึม Goertzel ให้ผลลัพธ์เกือบเท่ากับ 1 bin ของ DFT หรือ FFT ที่มีความยาวหรือจำนวนตัวอย่างเท่ากัน (และตำแหน่งที่ FFT twiddle factor สร้างขึ้นจากการเรียกซ้ำแบบไตรภาค) เมื่อใช้สำหรับความถี่ที่เป็นจำนวนเต็มเป็นระยะใน ความยาว Goertzel แต่อัลกอริทึมของ Goertzel หลายรูปแบบนั้นให้ความสำคัญเท่านั้นไม่ใช่ผลลัพธ์ที่ซับซ้อนหรือเฟสของผลลัพธ์ถังขยะ FFT 1 ยิ่งไปกว่านั้นการคำนวณ Goertzel ทั่วไปอาจมีเสถียรภาพน้อยกว่า FFT ทั่วไปเล็กน้อย สำหรับความถี่ที่ไม่ได้เป็นจำนวนเต็มเป็นระยะผลลัพธ์จะเทียบเท่ากับการแก้ไขระหว่าง SIN ของ DFT หรือ FFT ที่มีความยาวเท่ากัน (ซึ่งความแม่นยำของการแก้ไขเล็กน้อยกว่าการประมาณค่าพาราโบลาทั่วไปของผลลัพธ์ FFT )

การแก้ไขอาจกล่าวได้ว่าเป็นการเพิ่มความละเอียดในรูปแบบกราฟิก (มากกว่าจุดการพล็อต) หรือทำให้ง่ายต่อการมองเห็นจุดสูงสุด แต่ไม่ได้อยู่ในความหมายทางทฤษฎีข้อมูลและแยกเส้นสเปกตรัมระยะใกล้ 2 เส้นออกเป็นสองจุด


3
วรรคสอง: hotpaw2 พูดได้ดีมาก นี่คือสิ่งที่ฉันคิดว่าทำให้หลายคนสับสน ใช่แล้วดูเหมือนว่า Goertzel Algo เป็นวิธีที่รวดเร็วในการคำนวณ FFT ผ่านทาง subband ที่เลือกโดยมีการแก้ไขโดเมน F ในตัวที่ถูกโยนเข้ามาด้วยเช่นกันถ้าคุณทำทุกอย่างเหมือนว่าคุณกำลังเป็นปกติ FFT
Spacey

1

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.