วิธีการคำนวณ dBFS?


11

ฉันถามตัวเองว่าจะคำนวณ dBFS (dB full scale) จากค่าตัวอย่างระหว่าง 1 ถึง -1 ได้อย่างไร

และโดยทั่วไป?

คำตอบ:


13

มันค่อนข้างง่ายสำหรับค่าระหว่าง 1 ถึง -1:

valueDBFS = 20*log10(abs(value))

หากคุณมีค่าระหว่างช่วงอื่นเช่น 16 บิตนั่นคือ:

valueDBFS = 20*log10(abs(value)/32768)

(เพราะ 16 บิตที่เซ็นชื่อมีค่าระหว่าง -32768 ถึง +32767 เช่น 2 ^ 15 = 32768)

ดังนั้นสูตรทั่วไปคือ:

valueDBFS = 20*log10(abs(value)/maxValue)

ตัวอย่างรหัสจะได้รับในรหัส MATLAB


1
นี่เป็นเทคนิคที่ถูกต้อง แต่เมตร dBFS ส่วนใหญ่จะแสดงส่วนหัวจริง ๆ ดังนั้นคุณมักจะต้องการแสดงค่าลบของค่าเหล่านี้
Bjorn Roche

1
จากมาตรฐานทั้งหมดที่ฉันได้อ่านดูเหมือนว่า dBFS เป็นการวัด RMS อย่างเคร่งครัดไม่ใช่การวัดสูงสุดดังนั้นสิ่งนี้จะไม่ถูกต้อง
endolith

2

มาตรฐานทั้งหมดกำหนด dBFS เป็นการวัด RMSเทียบกับระดับ RMS ของคลื่นไซน์เต็มรูปแบบดังนั้นการคำนวณคือ:

value_dBFS = 20*log10(rms(signal) * sqrt(2)) = 20*log10(rms(signal)) + 3.0103
  • คลื่นไซน์เต็มรูปแบบคือ 0 dBFS
  • คลื่นสี่เหลี่ยมเต็มรูปแบบคือ +3 dBFS

หน่วย dBov ที่คล้ายกันนั้นถูกกำหนดในส่วนที่เกี่ยวข้องกับอัตราส่วนกำลังไฟฟ้า (ดังนั้นจึงเป็นการวัดแบบ RMS) เช่น DC เต็มรูปแบบหรือคลื่นสี่เหลี่ยมเป็น 0 dBov ดังนั้นการคำนวณคือ:

value_dBov = 20*log10(rms(signal))
  • คลื่นไซน์เต็มรูปแบบคือ −3 dBov
  • คลื่นสี่เหลี่ยมเต็มรูปแบบคือ 0 dBov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.