⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agc.m

📁 实现语音的压缩和解码的程序
💻 M
字号:
function sig_out=agc(sig_in,sig_out)
%/*----------------------------------------------------------------------*
% *   routine agc()                                                      *
% *   ~~~~~~~~~~~~~                                                      *
% * Scale the postfilter output on a subframe basis by automatic control *
% * of the subframe gain.                                                *
% *  gain[n] = AGC_FAC * gain[n-1] + (1 - AGC_FAC) g_in/g_out            *
% *----------------------------------------------------------------------*/

%  Word16 *sig_in,   /* (i)     : postfilter input signal  */
%  Word16 *sig_out,  /* (i/o)   : postfilter output signal */
%  Word16 l_trm      /* (i)     : subframe size            */

global past_gain;

%/* calculate gain_out with exponent */
gain_out=sum(sig_out.^2);
if gain_out==0
    past_gain=0;
else
   % /* calculate gain_in with exponent */
   gain_in=sum(sig_in.^2);
   if gain_in==0
       gg=0;
   else
       %/*---------------------------------------------------*
       % *  g0(Q12) = (1-AGC_FAC) * sqrt(gain_in/gain_out);  *
       % *---------------------------------------------------*/
       gg=(1-0.9)*sqrt(gain_in/gain_out);
   end
   
   %/* compute gain(n) = AGC_FAC gain(n-1) + (1-AGC_FAC)gain_in/gain_out */
   %/* sig_out(n) = gain(n) sig_out(n)                                   */
   gain=past_gain;
   for i=1:40
       gain=0.9*gain+gg;
       sig_out(i)=round(gain*sig_out(i));
   end
   past_gain=gain;
end
       
   
%gain_in
%gain_out
%gg*2^12


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -