46 lines
883 B
Matlab
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
|