Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
!! 17.06.2018 (Jel.) Khanova škola zve nadšence ke spolupráci na překladech návodů pro učitele a rodiče.
! 04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
17.01.2016 (Jel.) Rok 2016 s novými a novějšími krystaly od kolegy Pavla!
17.01.2016 (Jel.) Nabídka knih z oborů matematiky, fyziky, chemie
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 13. 11. 2019 01:16

Karmanova cesta
Zelenáč
Příspěvky: 23
Reputace:   
 

Právný vzorec pro převod hodnoty na dB (Delphi)

Matematika mi nikdy nešla tak se ptám, jak opravit vzorec.
Původní vzorec na převod z dB na lineární hodnotu mi byl dán:
1/exp(log10 * (dB/20))

Podle toho jsem sestrojil algoritmus (funkční):
dB := -24;

linearLevel := 1/exp( 2.30258509299 * (abs(dB)/20) ) ; // kde linearLevel je např. double = 0,12589254118
respektive s převodem na hodnotu vzorku je to:
linearLevel := Round( 1/exp( 2.30258509299 * (abs(dB)/20) ) *32767); // kde linearLevel je integer 2067

A tady je zakopaný pes:
A nyní se snažím o převod zpět - prý 20*log10(lv) ale to mi nevychází:
db := exp( 20*2.30258509299*(linearLevel) ); // vrací +INF (???)
db := round( exp( 20*2.30258509299*(linearLevel / 32767) ) );
// 18 dB

Poradí někdo?

Offline

 

#2 13. 11. 2019 09:02

Bati
Příspěvky: 2215
Reputace:   173 
 

Re: Právný vzorec pro převod hodnoty na dB (Delphi)

Chybi minus, tj. -20*ln10(lv)

Offline

 

#3 13. 11. 2019 10:36

Karmanova cesta
Zelenáč
Příspěvky: 23
Reputace:   
 

Re: Právný vzorec pro převod hodnoty na dB (Delphi)

ln10 je to samé jako Log10?

Offline

 

#4 14. 11. 2019 22:06

MichalAld
Moderátor
Příspěvky: 2266
Reputace:   72 
 

Re: Právný vzorec pro převod hodnoty na dB (Delphi)

Karmanova cesta napsal(a):

Matematika mi nikdy nešla tak se ptám, jak opravit vzorec.
Původní vzorec na převod z dB na lineární hodnotu mi byl dán:
1/exp(log10 * (dB/20))

Moc mi to nedává smysl, převod mezi číslem a jeho vyjádřením  v decibelech je prostě:


$A_{dB} = 20 \log A$

$A = 10^{(A_{dB}/20)}$

Co je na tom k nepochopení?

1       =  0dB
10     = 20 dB
100   = 40 dB
1000 = 60 dB
0.1    = -20 dB
0.01  = -40 dB
0.001= -60 dB

atd...

Ta dvacítka je tam jen na efekt, klidně bychom to mohli dělat i bez ní (označím to třeba jako bel, tedy jen B)
Pak by to bylo


1       = 0 B
10     = 1 B
100   = 2 B
1000 = 3 B
0.1    = -1 B
0.01  = -2 B
0.001= -3 B

Offline

 

#5 15. 11. 2019 09:54

Karmanova cesta
Zelenáč
Příspěvky: 23
Reputace:   
 

Re: Právný vzorec pro převod hodnoty na dB (Delphi)

Dík, mám to vyřešené.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson