|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Evgenij Masherov 2:5020/175.2 06 Jun 2003 21:34:51 To : Artem Anisimov Subject : lpc.c -------------------------------------------------------------------------------- Wed Jun 04 2003 21:03, Artem Anisimov wrote to Evgenij Masherov: AA>>> d(T,R) = log[ sum( Vt(m)*Rr(m), m=0..p) ] AA>>> кто такой Vt(m) установить не удалось. EM>> Встречал Vt, как обозначение матрицы, составленной из EM>> авторегрессионных коэффициентов, причем индекс означал "тестовый". В annex.B к G.729 Itakura distance рассчитывается через сумму произведений кожффициентов автокорреляции сигнала на _коэффициенты автокорреляции авторегрессионных коэффициентов_ /* Compute autocorr of LPC coefficients used for Itakura distance */ /******************************************************************/ static void calc_RCoeff(FLOAT *Coeff, FLOAT *RCoeff) { int i, j; FLOAT temp; /* RCoeff[0] = SUM(j=0->M) Coeff[j] ** 2 */ for(j=0, temp = (F)0.; j <= M; j++) { temp += Coeff[j] * Coeff[j]; } RCoeff[0] = temp; /* RCoeff[i] = SUM(j=0->M-i) Coeff[j] * Coeff[j+i] */ for(i=1; i<=M; i++) { for(j=0, temp=(F)0.; j<=M-i; j++) { temp += Coeff[j] * Coeff[j+i]; } RCoeff[i] = (F)2. * temp; } return; } /* Compute Itakura distance and compare to threshold */ /*****************************************************/ static int cmp_filt(FLOAT *RCoeff, FLOAT *acf, FLOAT alpha, FLOAT Thresh) { FLOAT temp1, temp2; int i; int diff; temp1 = (F)0.; for(i=0; i <= M; i++) { temp1 += RCoeff[i] * acf[i]; } temp2 = alpha * Thresh; if(temp1 > temp2) diff = 1; else diff = 0; return(diff); } Евгений Машеров АКА СанитарЖеня --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/3300b8342edc.html, оценка из 5, голосов 10
|