📄 do_zfilt.c
字号:
/* Copyright 2001,2002,2003 NAH6
* All Rights Reserved
*
* Parts Copyright DoD, Parts Copyright Starium
*
*/
/**************************************************************************
*
* ROUTINE
* do_zfilt
* do_zfilt_dynamic
*
* FUNCTION
* pole filter - given a filter structure
* do_zfilt assumes static coefficients
* do_zfilt_dynamic assumes changing coefficients
*
* SYNOPSIS
* subroutine do_zfilt(flt, coef, data)
*
* formal
*
* data I/O
* name type type function
* -------------------------------------------------------------------
* flt FILTER i/o FILTER structure
* coef float i coefficients
* data float i/o input/filtered output data
*
***************************************************************************
*
* DESCRIPTION
*
* Nonrecursive all-zero in-place time-domain filter.
* The filter is implemented in a direct form realisation.
*
* N -i
* H(z) = SUM b(i)z
* i=0
*
* x(t) ->---(z0)----- b0 >------+-----> y(t)
* | |
* z1------ b1 >------+
* | |
* z2------ b2 >------+
* | |
* : :
* | |
* zN------ bN >------+
*
*
***************************************************************************
*
* CALLED BY
*
* FindAdaptResidual FindLPCResidual UpdateEverything
* HPF_InSpeech HPF_OutSpeech PostFilter
*
***************************************************************************/
#include "celpfilt.h"
void do_zfilt(
FILTER *flt,
float data[])
{
register float ar;
int t, j;
for (t = 0; t < flt->data_length; t++)
{
flt->memory[0] = data[t];
ar = 0.0;
for (j = flt->order; j > 0; j--)
{
ar += flt->memory[j] * flt->coef[j];
flt->memory[j] = flt->memory[j-1];
}
data[t] = ar + flt->memory[0] * flt->coef[0];
}
}
void do_zfilt_dynamic(
FILTER *flt,
float coef[],
float data[])
{
register float ar;
int t, j;
for (t = 0; t < flt->data_length; t++)
{
flt->memory[0] = data[t];
ar = 0.0;
for (j = flt->order; j > 0; j--)
{
ar += flt->memory[j] * coef[j];
flt->memory[j] = flt->memory[j-1];
}
data[t] = ar + flt->memory[0] * coef[0];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -