2010-03-17 16 views

Antwort

17

Der Bereich liegt zwischen -160 dB und 0 dB. Wahrscheinlich möchten Sie es in einem Meter anzeigen, der von -90 dB bis 0 dB reicht. Das Anzeigen als Dezibel ist eigentlich nützlicher als als lineares Audiopegel, weil die Dezibel eine logarithmische Skala sind, was bedeutet, dass sie sich näher an die Lautstärke eines Schalls annähert.

Das heißt, Sie diese verwenden können, von Dezibel linear zu konvertieren:

linear = pow (10, decibels/20);

und der Rückseite:

decibels = log10 (linear) * 20;

Der Bereich für die oben genannten Dezibel negativ Unendlich Null und für linear ist 0,0 bis 1,0. Wenn der lineare Wert 0,0 ist, ist das -inf dB; linear bei 1,0 ist 0 dB.

+10

Was genau ist "20" hier? –

+0

Bei der Messung der Schallintensität in Luft ist der Referenzwert per Konvention ein Schalldruck von 20 Mikropascal (μPa), der Lehrbuchwert für den durchschnittlich leisesten Ton, den ein gesunder junger Mensch hören kann (bei einer Frequenz von 1000 Hz) https: //www.researchgate.net/post/Is_there_any_relationship_between_dB_decibel_and_dBA_how_to_convert_dB_to_dBA –

4

Apple implementiert auch eine dB zu linearen Amplitudenumwandlung Klasse MeterTable.cpp und MeterTable.h Suchen Sie in App SpeakHere Beispiel.

können Sie entweder ihre Inline-Funktion verwenden, die den Wert "on-the-fly"

inline double DbToAmp(double inDb); 

OR

erstellen MeterTable Instanz verwenden vorberechnete Tabelle Lookup berechnet. Dies speichert Konvertierungswerte im Speicher, sodass Ihre Anwendung die Anzahl der Berechnungen reduzieren kann.

float ValueAt(float inDecibels); 

HINWEIS: Lookup-Tabelle ist wahrscheinlich erforderlich, wenn Sie eine Menge von anderen Berechnungen zur gleichen Zeit los oder Sie müssen sehr schnelle Verarbeitung.

+1

SpeakHere app beispiel link -> http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html –

+0

Und die DbToAmp Funktion gibt zurück: ' pow (10., 0.05 * inDb); ' – CharlesA

+0

Auch https://github.com/warrenburton/MeterTableOC wenn Sie nicht den leichten Aufwand von C++ - Dateien in Ihrem Projekt wollen –