function W = razb_we(Q)
% ==============================================
% вычисление формантной и словесной разборчивости по нашим коэф-там воспр.:
% кривые P(E') разные для каждой из 7 полос частот
% Q - вектор входных отношений сигнал-шум
% W - словесная разборчивость
% ==============================================
% ===== входные данные: ======
f0 = [125; 250; 500; 1000; 2000; 4000; 8000];  % центральные частоты полос анализа
fn = [90; 180; 355; 710; 1400; 2800; 5600];   % нижние граничн.частоты полос анализа
fv = [180; 355; 710; 1400; 2800; 5600; 11025];   % верхние граничн.частоты полос анализа
alfa = [0.085 0.127 0.230 0.233 0.309 0.224 0.173];
beta = [0.085 0.078 0.065 0.011 0.047 0.095];
%
% ===== уровни ощущен. ========
for i = 1:7
    E(i)=Q(i);    % по Сапожкову  - уровень ощущениЯ есть обычное отношение сигнал-шум
end
%
% ===== коэф.воспр. =======
load koef_lev_sred_125;
koef_lev_125=getfield(koef_lev_sred_125,'koef');   % коэфф.полинома
E_lev_125=getfield(koef_lev_sred_125,'E');  % предельное значение слева
E_lev_min_125=min(E_lev_125);
load koef_prv_sred_125;
koef_prv_125=getfield(koef_prv_sred_125,'koef');   % коэфф.полинома
E_prv_min_125 = 40;  % предельное значение справа

load koef_lev_sred_250;
koef_lev_250=getfield(koef_lev_sred_250,'koef');   % коэфф.полинома
E_lev_250=getfield(koef_lev_sred_250,'E');  % предельное значение слева
E_lev_min_250=min(E_lev_250);
load koef_prv_sred_250;
koef_prv_250=getfield(koef_prv_sred_250,'koef');   % коэфф.полинома
E_prv_min_250 = 40;  % предельное значение справа
%
load koef_lev_sred_500;
koef_lev_500=getfield(koef_lev_sred_500,'koef');   % коэфф.полинома
E_lev_500=getfield(koef_lev_sred_500,'E');  % предельное значение слева
E_lev_min_500=min(E_lev_500);
load koef_prv_sred_500;
koef_prv_500=getfield(koef_prv_sred_500,'koef');   % коэфф.полинома
E_prv_min_500 = 40;  % предельное значение справа
%
load koef_lev_sred_1000;
koef_lev_1000=getfield(koef_lev_sred_1000,'koef');   % коэфф.полинома
E_lev_1000=getfield(koef_lev_sred_1000,'E');  % предельное значение слева
E_lev_min_1000=min(E_lev_1000);
load koef_prv_sred_1000;
koef_prv_1000=getfield(koef_prv_sred_1000,'koef');   % коэфф.полинома
%koef_prv_1000=[0 0 koef_prv_1000];    % выравниваем кол-во колонок (с 7 до 9)
E_prv_min_1000 = 40;  % предельное значение справа
%
load koef_lev_sred_2000;
koef_lev_2000=getfield(koef_lev_sred_2000,'koef');   % коэфф.полинома
E_lev_2000=getfield(koef_lev_sred_2000,'E');  % предельное значение слева
E_lev_min_2000=min(E_lev_2000);
load koef_prv_sred_2000;
koef_prv_2000=getfield(koef_prv_sred_2000,'koef');   % коэфф.полинома
%koef_prv_2000=[0 0 koef_prv_2000];        % выравниваем кол-во колонок (с 7 до 9)
E_prv_min_2000 = 40;  % предельное значение справа
%
load koef_lev_sred_4000;
koef_lev_4000=getfield(koef_lev_sred_4000,'koef');   % коэфф.полинома
E_lev_4000=getfield(koef_lev_sred_4000,'E');  % предельное значение слева
E_lev_min_4000=min(E_lev_4000);
load koef_prv_sred_4000;
koef_prv_4000=getfield(koef_prv_sred_4000,'koef');   % коэфф.полинома
%koef_prv_4000=[0 0 koef_prv_4000];      % выравниваем кол-во колонок (с 7 до 9)
E_prv_min_4000 = 40;  % предельное значение справа
%
load koef_lev_sred_8000;
koef_lev_8000=getfield(koef_lev_sred_8000,'koef');   % коэфф.полинома
E_lev_8000=getfield(koef_lev_sred_8000,'E');  % предельное значение слева
E_lev_min_8000=min(E_lev_8000);
load koef_prv_sred_8000;
koef_prv_8000=getfield(koef_prv_sred_8000,'koef');   % коэфф.полинома
%koef_prv_8000=[0 0 koef_prv_8000];      % выравниваем кол-во колонок (с 7 до 9)
E_prv_min_8000 = 40;  % предельное значение справа
% === формирование параметров кривых P'(E) ===
koef_lev = [koef_lev_125;koef_lev_250;koef_lev_500;koef_lev_1000;koef_lev_2000;koef_lev_4000;koef_lev_8000];
koef_prv = [koef_prv_125;koef_prv_250;koef_prv_500;koef_prv_1000;koef_prv_2000;koef_prv_4000;koef_prv_8000];
E_lev_min = [E_lev_min_125;E_lev_min_250;E_lev_min_500;E_lev_min_1000;E_lev_min_2000;E_lev_min_4000;E_lev_min_8000];
E_prv_min = [E_prv_min_125;E_prv_min_250;E_prv_min_500;E_prv_min_1000;E_prv_min_2000;E_prv_min_4000;E_prv_min_8000];
%
P_new = [];
for i = 1:7
P =  new_vospr(E(i),koef_lev(i,:),koef_prv(i,:),E_lev_min(i),E_prv_min(i));
P_new = [P_new P];
end
%
% ======== вер-сти формант ======
for i = 1:7
   if f0(i) <= 400
        pv(i) = 2.57*10^(-8)*(fv(i).^2.4-fn(i).^2.4);
     else
        pv(i) = 1.074*(exp(-10^(-4)*fn(i).^1.18)-exp(-10^(-4)*fv(i).^1.18));
   end
end
%
% ======== артикуляционная (формантная) разборчивость ========
%A = sum(pv.*P_new);
I1 = 0; I2 = 0;
for k = 1:7
    I1 = I1 + alfa(k)*P_new(k);
end
for k = 1:6
    I2 = I2 + beta(k)*sqrt(P_new(k)*P_new(k+1));
end
A = sum(I1)-sum(I2);
%
% ======== словесная разборчивость  =========
if A<0.15
       W = 1.54*A^0.25*(1-exp(-11*A));
   else
       W = 1-exp(-11*A/(1+0.7*A));
end
