This documentation page applies to an outdated major AMT version. We show it for archival purposes only.
Click here for the documentation menu and here to download the latest AMT (1.6.0).
function y = dbspl(insig,varargin)
%DBSPL RMS value of signal (in dB)
% Usage: y = dbspl(insig);
% y = dbspl(insig,'ac');
%
% `dbspl(insig)` computes the average SPL (sound pressure level) of the
% input signal measured in dB, using the convention that a pure tone at
% 100 dB SPL has an RMS value of 1.
%
% `dbspl(insig,'dboffset',dboffset)` specifies a reference level to
% convert between RMS and dB SPL. Default value is 100. Some commonly
% used values are:
%
% * $dboffset = 0$. This convention was used for the development of the
% DRNL and Breebaart models.
%
% * $dboffset = -20*log10(20e-6) = 93.98$. This corresponds to the common
% convention of the reference being 20 micro Pa. Using this
% convention, the numerical values of signals is the sound pressure
% measured in Pascal.
%
% * $dboffset = 100$. This convention was used for the development of the
% Dau and Jepsen models.
%
% Globally changing the reference level for all functions in the
% toolbox can be done by the following code::
%
% ltfatsetdefaults('dbspl','dboffset',desired_dboffset);
%
% and the currently used reference level is obtained by::
%
% current_dboffset = dbspl(1);
%
% DBSPL takes the following flags at the end of the line of input
% parameters:
%
% 'ac' Consider only the AC component of the signal (i.e. the mean is
% removed).
%
% 'dim',d Work along specified dimension. The default value of []
% means to work along the first non-singleton one.
%
% 'dboffset',dboffset
% Specify offset in dB. Default value is 100.
%
% See also: setdbspl
%
% References: moore2003introduction
% AUTHOR : Hagen Wierstorf
definput.keyvals.dim=[];
definput.flags.mean={'noac','ac'};
definput.keyvals.dboffset=100;
[flags,kv]=ltfatarghelper({'dim','dboffset'},definput,varargin);
% ------ Computation --------------------------
% The level of a signal in dB SPL is given by the following formula:
% level = 20*log10(p/p_0)
% To get to the standard used in the toolbox.
y = 20*log10( rms(insig,flags.mean) )+kv.dboffset;