Low level routine
eng -
fr
nfilter_c - finite impulse response filter by discrete time convolution method computational routine
- n : size of input vector
- nbcoef : length of the impulse response
- u : address of signal input vector
- pulse : address of impulse response input vector
- y : address of signal output vector
- z : address of discrete state of the filter
/* nfilter_c subroutine
* FIR computation
* with classic discrete convolution method
* IRCOM GROUP - Author : A.Layec
*/
/* REVISION HISTORY :
* $Log$
*/
#include "mod_num_lib.h"
/* nfilter_c : routine de calcul d'un filtre à réponse impulsionnelle fini
* par convolution numérique
*
* Entrées :
* n : longueur du vecteur d'entrée à filtrer
* nbcoef : longueur de la réponse impulsionelle
* u : adresse de départ du vecteur d'entrée à filtrer
* pulse : adresse de départ de la réponse impulsionelle
*
* Sorties :
* y : adresse de départ du vecteur filtré
*
* Entrées/sorties :
* z : adresse de départ du vecteur mémoire du filtre
*/
void nfilter_c(int *n,int *nbcoef,double *u,double *pulse,double *y,double *z)
{
/*déclaration*/
double somme;
int i,j;
for(j=0;j<(*n);j++)
{
/*calcul sortie*/
somme=0;
for(i=0;i<(*nbcoef)-1;i++)
{
somme=somme+z[(*nbcoef)-1-i]*pulse[i];
}
somme=somme+u[j]*pulse[*nbcoef-1];
/*calcul mémoire*/
for(i=0;i<(*nbcoef)-1;i++)
{
z[(*nbcoef)-i-1]=z[(*nbcoef)-i-2];
}
z[0]=u[j];
/*recopie sortie dans y*/
y[j]=somme;
}
return;
}
IRCOM Group
Alan Layec