ฉันได้พยายามหาเหตุผลสำหรับงานนี้และวางแผนที่จะใช้แพ็คเกจซอร์สของ KissFFT เพื่อทำการแปลงฟูริเยร์อย่างรวดเร็ว โปรดแจ้งให้เราทราบหากนี่เป็นสิ่งที่ถูกต้อง:
- จัดสรรโครงสร้าง FFT เช่น
kiss_fft_alloc(N,0,NULL,NULL)
ในกรณีที่N
เป็นขนาดของหน้าต่างฉันใช้ บัฟเฟอร์อินพุตจะอาร์เรย์ขององค์ประกอบของประเภทN
kiss_fft_scalar
บัฟเฟอร์ส่งออกจะอาร์เรย์ขององค์ประกอบของประเภทN/2 + 1
kiss_fft_cpx
- หมายเลขถอดรหัส
N
(ขนาดหน้าต่าง) ของตัวอย่าง PCM - สำหรับตัวอย่าง PCM แต่ละค่าเฉลี่ยแอมพลิจูดของแต่ละแชนเนล (ตัวอย่างที่ไม่ได้ลงชื่อ) และสเกลตั้งแต่ 0 ถึง 2 (หารด้วย 65536.0) เก็บผลลัพธ์ไว้ในบัฟเฟอร์อินพุต
- ดำเนินการกับหน้าต่าง (เช่น Hanning) บนบัฟเฟอร์อินพุต
- ทำการแปลงฟูริเยร์อย่างรวดเร็วบนอินพุตบัฟเฟอร์เก็บไว้ในบัฟเฟอร์เอาต์พุต ตั้งแต่ฉันใช้ค่าจริงเป็น input
kiss_fftr()
ฉันสามารถใช้ - สำหรับ
N/2
ค่าเอาต์พุตให้รับขนาดกำลังสองของข้อมูลที่แปลงแล้วแปลงค่าเป็นสเกล dB ด้วยสูตรต่อไปนี้:10 * log10 (re * re + im * im)
- เขียน
N/2
ค่าจากขั้นตอนที่ 6 - ทิ้งช่วงครึ่งแรกของอินพุตบัฟเฟอร์ถอดรหัสตัวอย่าง PCM ถัดไป (ขนาดหน้าต่าง / 2) และทำการปรับขนาดและปรับหน้าต่างไปยังข้อมูล สิ่งนี้ควรเลื่อนหน้าต่างอินพุตอย่างมีประสิทธิภาพและหลีกเลี่ยงการทำซ้ำคณิตศาสตร์บนตัวอย่าง PCM ที่ประมวลผล
- วนไปที่ขั้นตอนที่ 5 โดยทำซ้ำขั้นตอนเหล่านี้จนกว่าตัวอย่างทั้งหมดจะได้รับการประมวลผล
kiss_fft_alloc()
ฟรีหน่วยความจำที่ใช้จาก
แนะนำให้ฉันลบค่าจากหน้าต่างอินพุตก่อนที่ฉันจะดำเนินการ FFT เพื่อให้ค่า DC ที่ได้นั้นมีขนาดเท่ากับศูนย์ ฉันควรจะลบค่าเฉลี่ยหรือค่าเฉลี่ยจากข้อมูลอินพุตหรือไม่
นอกจากนี้สิ่งที่ฉันต้องพิจารณาเมื่อเลือกขนาดหน้าต่างคืออะไร นอกจากนั้นจะต้องมีจำนวนคู่ตามคำแนะนำของ KissFFT จะมีประโยชน์ในการใช้ขนาดหน้าต่างเล็ก ๆ เช่น จะให้กราฟที่ดีกว่านี้หรือไม่ ฉันสมมติว่าขนาดหน้าต่างใหญ่ลดจำนวนของ FFT ที่ต้องดำเนินการนั่นเป็นเพียงประโยชน์ของการใช้ขนาดหน้าต่างใหญ่เท่านั้นหรือไม่
สุดท้ายเมื่อฉันไปถึงจุดที่ข้อมูลพร้อมที่จะลงจุดฉันจะไปลงจุดได้อย่างไร เมื่อก่อนฉันใช้ตรรกะกราฟคลื่นบางรูปแบบในอดีตฉันเพิ่งพล็อต 3 ค่าสำหรับแต่ละพิกเซลตาม -axis (แอมพลิจูดขั้นต่ำ, แอมพลิจูดสูงสุด, แอมพลิจูด RMS) แต่ฉันไม่รู้ว่าควรทำอะไร ข้อมูล spectrogram
ขอบคุณล่วงหน้าสำหรับคำแนะนำใด ๆ และทั้งหมดที่คุณสามารถให้ได้