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

46 lines
883 B
Matlab

function BW = PQmovBW (X2)
% Bandwidth tests
% P. Kabal $Revision: 1.1 $ $Date: 2003/12/07 13:34:46 $
persistent kx kl FR FT N
if (isempty (kx))
NF = 2048;
Fs = 48000;
fx = 21586;
kx = round (fx / Fs * NF); % 921
fl = 8109;
kl = round (fl / Fs * NF); % 346
FRdB = 10;
FR = 10^(FRdB / 10);
FTdB = 5;
FT = 10^(FTdB / 10);
N = NF / 2; % Limit from pseudo-code
end
Xth = X2(2,kx+1);
for (k = kx+1:N-1)
Xth = max (Xth, X2(2,k+1));
end
% BWRef and BWTest remain negative if the BW of the test signal
% does not exceed FR * Xth for kx-1 <= k <= kl+1
BW.BWRef = -1;
XthR = FR * Xth;
for (k = kx-1:-1:kl+1)
if (X2(1,k+1) >= XthR)
BW.BWRef = k + 1;
break;
end
end
BW.BWTest = -1;
XthT = FT * Xth;
for (k = BW.BWRef-1:-1:0)
if (X2(2,k+1) >= XthT)
BW.BWTest = k + 1;
break;
end
end