簡單來說這是能量的比值表示法[1]。
關鍵詞會鎖定在gain/attenuation
amplitude跟power差一個次方。
常見3dB(2), 6dB(4), 20dB(100)
我們都知道C語言math.h[8]當中會有log(), log2(), log10()函式可以使用,
而這些函式是如何設計實現呢?
或換言之,在嵌入式系統中,我們該如何在有限的資源裡轉換dB值呢?
這都是一門技術。
這裡先簡單帶過之後有時間再做詳細介紹。
主要是透過Taylor expansion[4]和logarithm rule[3],透過一些誤差犧牲而換取有效的得到轉換值所產生的。
自然函數能利用Taylor expansion來呈現,若要轉換基底就透過一些對數規則[3]做轉換。
透過觀察[4]我們能知道Taylor expansion對於自然對數的呈現,若N級數很大的情況下在-1 ~ 1之間較為精準,若級數較小時-0.5 ~ 0.5較為精確。
Reference
[1]http://en.wikipedia.org/wiki/Decibel
http://en.wikipedia.org/wiki/Logarithm
[3]http://www.rapidtables.com/math/algebra/Logarithm.htm
[4]http://en.wikipedia.org/wiki/Taylor_series
http://en.wikipedia.org/wiki/Common_logarithm
[6]http://mathworld.wolfram.com/NaturalLogarithm.html
http://en.wikipedia.org/wiki/Natural_logarithm_of_2
[8]http://www.codecogs.com/library/computing/c/math.h/log.php
http://stackoverflow.com/questions/15967240/fastest-implementation-of-log2int-and-log2float
http://stackoverflow.com/questions/9411823/fast-log2float-x-implementation-c
No comments:
Post a Comment