Low level routine
eng -
fr
convolfft_c - signal by impulse response multiplication with fft method computational routine
- m1 : size of vectors
- z1_r : address of real parts of the first time domain input vector
- z1_i : address of imaginary parts of the first time domain input vector
- z2_r : address of real parts of the second time domain input vector
- z2_i : address of imaginary parts of the second time domain input vector
- y_r : address of real parts of the time domain output vector
- y_i : address of imaginray parts of the time domain output vector
/* convolfft_c subroutine
* FFT convolution computation
* IRCOM GROUP - Author : A.Layec
*/
/* REVISION HISTORY :
* $Log$
*/
#include "mod_num_lib.h"
/* convolfft_c routine de calcul de filtre à réponse impulsionnelle finie
* par la méthode de convolution par fft
*
* m1 : taille des vecteurs
* z1_r : adresse de départ de la partie réelle du vecteur temporel 1 d'entrée
* z1_i : adresse de départ de la partie imaginaire du vecteur temporel 1 d'entrée
* z2_r : adresse de départ de la partie réelle du vecteur temporel 2 d'entrée
* z2_i : adresse de départ de la partie imaginaire du vecteur temporel 2 d'entrée
* y_r : adresse de départ de la partie réelle du vecteur temporel résultat
* y_i : adresse de départ de la partie imaginaire du vecteur temporel résultat
*
* utilise : fft842 (signal)
* complx_c
*
* rmq m1 doit-être de taille en puissance de 2
*/
void convolfft_c(int *m1,double *z1_r,double *z1_i,double *z2_r,double *z2_i,double *y_r,double *y_i)
{
/*déclaration*/
int k,i,ierr;
/*appel fft*/
F2C(fft842)((k=0,&k),m1,&z1_r[0],&z1_i[0],&ierr);
/*appel fft*/
F2C(fft842)((k=0,&k),m1,&z2_r[0],&z2_i[0],&ierr);
/*Réalise la multiplication vectorielle complexe*/
cmplxm_c(m1,&z1_r[0],&z1_i[0],&z2_r[0],&z2_i[0],&y_r[0],&y_i[0]);
/*appel fft-1*/
F2C(fft842)((k=1,&k),m1,&y_r[0],&y_i[0],&ierr);
return;
}
IRCOM Group
Alan Layec