denoising-historical-data/PQevalAudio/MOV/PQframeMOV.m
2021-08-30 18:42:12 +03:00

66 lines
1.7 KiB
Matlab

function PQframeMOV (i, MOVI)
% Copy instantaneous MOV values to a new structure
% The output struct MOVC is a global.
% For most MOV's, they are just copied to the output structure.
% The exception is for the probability of detection, where the
% MOV's measure the maximum frequency-by-frequecy between channels.
% P. Kabal $Revision: 1.1 $ $Date: 2003/12/07 13:34:46 $
global MOVC
[Nchan,Nc] = size (MOVC.MDiff.Mt1B);
for (j = 1:Nchan)
% Modulation differences
MOVC.MDiff.Mt1B(j,i+1) = MOVI(j).MDiff.Mt1B;
MOVC.MDiff.Mt2B(j,i+1) = MOVI(j).MDiff.Mt2B;
MOVC.MDiff.Wt(j,i+1) = MOVI(j).MDiff.Wt;
% Noise loudness
MOVC.NLoud.NL(j,i+1) = MOVI(j).NLoud.NL;
% Total loudness
MOVC.Loud.NRef(j,i+1) = MOVI(j).Loud.NRef;
MOVC.Loud.NTest(j,i+1) = MOVI(j).Loud.NTest;
% Bandwidth
MOVC.BW.BWRef(j,i+1) = MOVI(j).BW.BWRef;
MOVC.BW.BWTest(j,i+1) = MOVI(j).BW.BWTest;
% Noise-to-mask ratio
MOVC.NMR.NMRavg(j,i+1) = MOVI(j).NMR.NMRavg;
MOVC.NMR.NMRmax(j,i+1) = MOVI(j).NMR.NMRmax;
% Error harmonic structure
MOVC.EHS.EHS(j,i+1) = MOVI(j).EHS.EHS;
end
% Probability of detection (collapse frequency bands)
[MOVC.PD.Pc(i+1), MOVC.PD.Qc(i+1)] = PQ_ChanPD (MOVI);
%----------------------------------------
function [Pc, Qc] = PQ_ChanPD (MOVI)
Nc = length (MOVI(1).PD.p);
Nchan = length (MOVI);
Pr = 1;
Qc = 0;
if (Nchan > 1)
for (m = 0:Nc-1)
pbin = max (MOVI(1).PD.p(m+1), MOVI(2).PD.p(m+1));
qbin = max (MOVI(1).PD.q(m+1), MOVI(2).PD.q(m+1));
Pr = Pr * (1 - pbin);
Qc = Qc + qbin;
end
else
for (m = 0:Nc-1)
Pr = Pr * (1 - MOVI.PD.p(m+1));
Qc = Qc + MOVI.PD.q(m+1);
end
end
Pc = 1 - Pr;