annotate nonExposed/ebr.m @ 51:ebf92ed7d680 tip master

Added -fd (--full-duration) argument.
author Emmanouil Theofanis Chourdakis <e.t.chourdakis@qmul.ac.uk>
date Sun, 30 Sep 2018 13:21:49 +0100
parents b1901e8d8f5f
children
rev   line source
mathieu@14 1 function s = ebr (fg, bg, offset, fgScale)
mathieu@14 2 % Computes the EBR of fg relatively to bg
mathieu@14 3 % If the optional argument offset is provided, will compute the EBR of fg
mathieu@14 4 % at position 'offset' in bg
mathieu@14 5 % If the optional argument fgScale is provided, the SNR of fg*fgScale over
mathieu@14 6 % bg will be returned instead
mathieu@14 7
mathieu@14 8 % This program was written by Mathias Rossignol & Grégoire Lafay
mathieu@14 9 % is Copyright (C) 2015 IRCAM <http://www.ircam.fr>
mathieu@14 10 %
mathieu@14 11 % This program is free software: you can redistribute it and/or modify it
mathieu@14 12 % under the terms of the GNU General Public License as published by the Free
mathieu@14 13 % Software Foundation, either version 3 of the License, or (at your option)
mathieu@14 14 % any later version.
mathieu@14 15 %
mathieu@14 16 % This program is distributed in the hope that it will be useful, but
mathieu@14 17 % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
mathieu@14 18 % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
mathieu@14 19 % for more details.
mathieu@14 20 %
mathieu@14 21 % You should have received a copy of the GNU General Public License along
mathieu@14 22 % with this program. If not, see <http://www.gnu.org/licenses/>.
mathieu@14 23
mathieu@14 24 if (nargin<=2) offset=1; end
mathieu@14 25 if (nargin<=3) fgScale=1; end
mathieu@14 26
mathieu@14 27 endPosBg = min(offset+length(fg)-1, length(bg));
mathieu@14 28 endPosFg = endPosBg-offset+1;
mathieu@14 29
mathieu@14 30 aFg = sqrt(sum((fg(1:endPosFg).*fgScale).^2)/endPosFg); %RMS
mathieu@14 31 aBg = sqrt(sum(bg(offset:endPosBg).^2)/endPosFg); %RMS
mathieu@14 32
mathieu@14 33 s = 20*log10(aFg/(aBg+.001));
mathieu@14 34 %fprintf('fg from position %i to %i, %i samples, scale = %f, bg pow = %f, fg pow = %f, snr = %f\n', offset, endPosBg, endPosFg, fgScale, aBg, aFg, s);
mathieu@14 35 end