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
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
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
Příspěvky: 62
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: 2435
Reputace:   191 
 

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
Příspěvky: 62
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: 4892
Reputace:   125 
 

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
Příspěvky: 62
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