📄 do_zfilt.c
字号:
/**************************************************************************** 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 + -