การใช้ A-weighting


11

ฉันต้องการคำนวณความดังของสัญญาณที่กำหนดและฉันได้พบกับเธรดนี้ ฉันสับสนเล็กน้อยเกี่ยวกับมุมมอง A-Weighting ของมัน ฉันไม่สามารถโพสต์ภาพได้ แต่ฉันคิดว่าเว็บไซต์นี้มีสูตรที่ฉันต้องการ (Wa = 10log ... )

สิ่งที่ฉันไม่เข้าใจคือวิธีใช้งานจริงในโปรแกรมของฉัน ถ้าค่าfย่อมาจากความถี่ก็น่าจะสามารถ hardcode ค่าเพราะพวกเขาจะคงที่ หากเป็นกรณีนี้ฉันWaจะนำไปใช้กับค่าตัวอย่างของฉันได้อย่างไรและฉันจะใช้ค่าใดได้อย่างไร ฉันคำนวณสเปกตรัมพลังงานเพื่อรับWINDOW_SIZE/2ค่าและคูณแต่ละค่าในแถบความถี่ด้วยWaค่าที่คำนวณล่วงหน้าที่เกี่ยวข้องหรือเป็นวิธีที่ผิดในการทำหรือไม่? ขอบคุณล่วงหน้า.

คำตอบ:


8

ใช่คุณสามารถฮาร์ดโค้ดค่าทำสัญญาณ FFT ของคุณและคูณด้วยค่าฮาร์ดโค้ดจากนั้นรับแอมพลิจูดในโดเมนความถี่จากทฤษฎีบทของ Parseval ( ตัวอย่าง )

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

โปรดทราบว่าการแปลงแบบบิลิแนร์ทำให้ตัวกรองดิจิทัลหมุนเร็วกว่าตัวกรองแบบอะนาล็อกจึงแนะนำข้อผิดพลาดในการวัดที่อัตราตัวอย่างทั่วไป การแก้ไขอย่างง่ายคือการสุ่มตัวอย่างข้อมูลก่อนดังนั้นความคลาดเคลื่อนจะลดลง แนวทางการออกแบบตัวกรองอื่น ๆ ที่นี่: http://dsp.stackexchange.com/q/36077/29


ขอบคุณฉันเข้าใจดีขึ้นเล็กน้อย ในตัวอย่าง Parseval ของคุณ rms_flat คือสมการ RMS (SQRT(x1^2 + x2^2...xn^2/n))และความแตกต่างระหว่าง rms_flat ของสัญญาณและ rms_flat ของ FFT คืออะไร
TryNCode

@ExpAns: ใช่เป็นเพียงrms_flat() คือด้านนอก ค่า RMS ของสัญญาณและ FFT เหมือนกันยกเว้นตัวประกอบสเกล sqrt(mean(absolute(a)**2))/n
endolith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.