Mercurial > hg > aimmat
view aim-mat/modules/bmm/dcgc/Eqlz2MeddisHCLevel.m @ 4:537f939baef0 tip
various bug fixes and changed copyright message
author | Stefan Bleeck <bleeck@gmail.com> |
---|---|
date | Tue, 16 Aug 2011 14:37:17 +0100 |
parents | 74dedb26614d |
children |
line wrap: on
line source
% Equalizing Signal RMS Level to the Level for MeddisHairCell % Irino, T. % Created: 9 Jun. 2004 % Modified: 9 Jun. 2004 % % function [SndEqM, AmpdB] = Eqlz2MeddisHCLevel(Snd,fs,OutLeveldB); % INPUT Snd: % fs: sampling frequency % OutLeveldB : Output level (default: 50 dB SPL) % % OUTPUT SndEq: Equalized Sound (rms value of 1 is 30 dB SPL) % AmpdB: 3 values in dB % [OutLevel, Compensation value, SourceLevel] % % Ref: Meddis (1986), JASA, 79(3),pp.702-711. % % rms(s(t)) == sqrt(mean(s.^2)) == 1 --> 30 dB SPL % rms(s(t)) == sqrt(mean(s.^2)) == 10 --> 50 dB SPL % rms(s(t)) == sqrt(mean(s.^2)) == 100 --> 70 dB SPL % function [SndEqM, AmpdB] = Eqlz2MeddisHCLevel(Snd,fs,OutLeveldB); if nargin < 2, help Eqlz2MeddisHCLevel; end; if nargin < 3, OutLeveldB = []; end; if length(OutLeveldB) == 0, OutLeveldB = 50; end; % for speech if nargin < 4, Method = 'Peak'; end; SourceLevel = sqrt(mean(Snd.^2))*10^(30/20); % level in terms of Meddis Level Amp = (10^(OutLeveldB/20))/SourceLevel; SndEqM = Amp * Snd; AmpdB = [OutLeveldB 20*log10([Amp, SourceLevel])];