ГОСТ Р 56047— 2014
% распространение вниз
Es(Nc-1+1) = Ene(Nc-1+1);
aLe = а1_ле;
for (m = Nc-2:-1:0)
Es(m+1) = aLe * Es(m+1+1) + Ene(m+1);
end
% распространение вверх i > m
for (m = 0:Nc-2)
r= Ene(m+1):
a = aUCEe(m+1);
for (i = m+1:Nc-1)
r = r*a ;
Es(i+1) = Es{i+1) + r,
end
end
for (i = 0:Nc-1)
Es(i+1) = (Es(i+1 ))A(1/в) / Bs(i+1);
end
function Eb = PQgroupCB (X2. Ver)
% группировка вектора энергии ДПФ и критической полосы пропускания
% Х2 - вектор значений, возведенных в степень 2
% ЕЬ - вектор возбуждений
persistent Nc kl ku Ul Uu Version
Emin = 1e-12;
if (- strcmp (Ver. Version))
Version = Ver;
NF = 2048;
Fs = 48000;
[Nc. kl. ku. Ul. Uu] = PQ_CBMapp.ng (NF. Fs. Version);
end
% выделение памяти
Eb = zeros (1, Nc);
% вычисление возбуждений в каждой полосе
for (i = 0;Nc-1)
Ea = Ul(i+1) * X2(kl(i+1)+1);
for (k = (kl(i+1)+1):(ku{i+1У1))
Ea = Ea + X2(k+1);
end
Ea = Ea + Uu(i+1) * X2(ku(i+1>+1);
Eb<i+1) = max(Ea. Emin);
end
%
------------------------
function [Nc. kl. ku. Ul. Uu] = PQ_CBMapping (NF. Fs. Version)
[Nc. fc. fl. fu] = PQCB (Version);
df = Fs / NF;
for (i = 0;Nc-1)
fli = fl(i+1):
fui = fu(i+1);
for (k = 0;NFi2)
if ((k+0.5)*df > fli)
kl(i+1) = k;
Ul(i+1) = (min(fui. (к+0.5)^0...
- max(fli. (k-0.5)*df)) / df;
break;
end
end
31