ฉันมีอัลกอริทึมที่ zero pad เรียงลำดับไปที่ 4N ทำ FFT และใช้ความถี่ต่ำสุด N ที่ชี้จาก 4N ที่สร้างขึ้นเท่านั้น
ดูเหมือนว่าจะมีงานที่ต้องสูญเปล่ามากมายความคิดใด ๆ ที่สามารถทำได้เร็วกว่านี้
ฉันมีอัลกอริทึมที่ zero pad เรียงลำดับไปที่ 4N ทำ FFT และใช้ความถี่ต่ำสุด N ที่ชี้จาก 4N ที่สร้างขึ้นเท่านั้น
ดูเหมือนว่าจะมีงานที่ต้องสูญเปล่ามากมายความคิดใด ๆ ที่สามารถทำได้เร็วกว่านี้
คำตอบ:
หากคุณเพียงไม่กี่ถังขยะต่อไปนี้อาจมีประสิทธิภาพมากสำหรับคุณ:
1. ทำ DFT ที่ความถี่แต่ละครั้งที่คุณต้องการ
2. ใช้อัลกอริทึม Goertzel สำหรับแต่ละความถี่ที่มีปัญหา
การเว้นระยะห่างจากศูนย์เป็น 4X ยาวคำนวณ FFT ที่ยาวขึ้นแล้วใช้เฉพาะถังขยะล่างที่ 1/4 ก่อให้เกิดผลลัพธ์ที่เหมือนกันเกือบเท่ากับการแก้ไขแบบ Sinc ของความยาวดั้งเดิม FFT
ดังนั้นเพียงแค่ใช้ความยาว FFT ดั้งเดิมและสอดแทรกโดยใช้เคอร์เนลการแก้ไข 3 เฟส Sinc พร้อมความกว้างของหน้าต่างที่เหมาะสม
การเติมเต็มศูนย์ในโดเมนเวลาให้โซลูชันความถี่สูงขึ้น แต่ไม่มีข้อมูลใหม่ดังนั้นจึงให้การแก้ไขในโดเมนความถี่เป็นหลัก ขึ้นอยู่กับลักษณะของสัญญาณและความแม่นยำที่คุณต้องการคุณอาจได้รับคะแนนความถี่เพิ่มเติมด้วย FFT ปกติที่มี N จุดและทำการแก้ไขที่เหมาะสม (เชิงเส้น, เส้นโค้ง, pchip, sinc ฯลฯ )