Referencia del Archivo xfft.h

Funciones para el calculo eficiente y reiterado de FFT, cepstrum y potencia por bandas. Más...

#include "spl.h"

Dependencia gráfica adjunta para xfft.h:

Gráfico de los archivos que directa o indirectamente incluyen a este archivo:

Ir al código fuente de este archivo.

Estructuras de datos

struct  _CFFT
 estructura "objeto" para FFT compleja Más...
struct  _RFFT
 estructura "objeto" para FFT real Más...
struct  _CEPFM
 estructura "objeto" para cepstrum FFT-modulo Más...
struct  _FBAND
 estructura "objeto" para potencia por bandas Más...

metodos de fft compleja

#define cfft_getnormvec(c)   cfft_getrevec(c)
 Inicializaci�n de _CFFT.
#define cfft_getmagvec(c)   cfft_getrevec(c)
 Inicializaci�n de _CFFT.
#define cfft_getargvec(c)   cfft_getimvec(c)
 Inicializaci�n de _CFFT.
pCFFT API cfft_construct (SPL_INT np, SPL_INT fftnp, SPL_BOOL inv, SPL_FLOAT ufactor)
 Inicializaci�n de _CFFT.
SPL_VOID API cfft_destruct (pCFFT c)
 Destructor para una estructura _CFFT.
SPL_VOID API cfft_setnp (pCFFT c, SPL_INT np)
 Fija la longitud de los vectores de entrada.
SPL_VOID API cfft_setinv (pCFFT c, SPL_BOOL inv)
 Fija el c�lculo a FFT directa o inversa.
SPL_VOID API cfft_setufactor (pCFFT c, SPL_FLOAT ufactor)
 Fija el factor de escala.
SPL_INT API cfft_getnp (pCFFT c)
 Devuelve el n�mero de puntos de los vectores de entrada.
SPL_INT API cfft_getfftnp (pCFFT c)
 Devuelve el n�mero de puntos de la FFT.
SPL_INT API cfft_getvecnp (pCFFT c)
 Devuelve el n�mero de puntos de la FFT.
SPL_BOOL API cfft_getinv (pCFFT c)
 Devuelve si se est� calculando una FFT directa o inversa.
SPL_FLOAT API cfft_getufactor (pCFFT c)
 Devuelve el factor de escala aplicado.
SPL_pFLOAT API cfft_getrevec (pCFFT c)
 Acceso a la parte real de la FFT.
SPL_pFLOAT API cfft_getimvec (pCFFT c)
 Acceso a la parte imaginaria de la FFT.
SPL_VOID API cfft_cfft (pCFFT c, SPL_pFLOAT re_invec, SPL_pFLOAT im_invec)
 Calcula la FFT de una secuencia compleja.
SPL_VOID API cfft_norm (pCFFT c)
 Calcula la norma de una FFT ya calculada.
SPL_VOID API cfft_mag (pCFFT c)
 Calcula el m�dulo de una FFT ya calculada.
SPL_VOID API cfft_arg (pCFFT c)
 Calcula la fase de una FFT ya calculada.
SPL_VOID API cfft_normarg (pCFFT c)
 Calcula la norma y la fase de una FFT ya calculada.
SPL_VOID API cfft_magarg (pCFFT c)
 Calcula el m�dulo y la fase de una FFT ya calculada.
SPL_VOID API cfft_trefmove_reim (pCFFT c, SPL_FLOAT nTs)
 Incorpora un retardo temporal a los valores de la FFT.
SPL_VOID API cfft_trefmove_arg (pCFFT c, SPL_FLOAT nTs)
 Incorpora un retardo temporal a los valores de la FFT.
SPL_VOID API cfft_trefmove_argm (pCFFT c, SPL_FLOAT nTs)
 Incorpora un retardo temporal a los valores de la FFT.

metodos de fft real

#define rfft_getnormvec(r)   rfft_getrevec(r)
 Inicializaci�n de _RFFT.
#define rfft_getmagvec(r)   rfft_getrevec(r)
 Inicializaci�n de _RFFT.
#define rfft_getargvec(r)   rfft_getimvec(r)
 Inicializaci�n de _RFFT.
pRFFT API rfft_construct (SPL_INT np, SPL_INT fftnp, SPL_BOOL inv, SPL_FLOAT ufactor, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
 Inicializaci�n de _RFFT.
SPL_VOID API rfft_destruct (pRFFT r)
 Destructor para una estructura _RFFT.
SPL_BOOL API rfft_setwin (pRFFT r, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
 Modifica el tipo de enventanado.
SPL_BOOL API rfft_setnp (pRFFT r, SPL_INT np)
 Fija la longitud de los vectores de entrada.
SPL_BOOL API rfft_setnpwin (pRFFT r, SPL_INT np, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
 Modifica el tipo de enventanado y la longitud de los vectores de entrada a la vez.
SPL_VOID API rfft_setinv (pRFFT r, SPL_BOOL inv)
 Fija el c�lculo a FFT directa o inversa.
SPL_VOID API rfft_setufactor (pRFFT r, SPL_FLOAT ufactor)
 Fija el factor de escala.
SPL_VOID API rfft_set0piweight (pRFFT r, SPL_BOOL weight)
 Configura el factor de ponderaci�n en 0 y PI.
SPL_BOOL API rfft_get0piweight (pRFFT r)
 Devuelve el estado del factor de ponderaci�n.
SPL_INT API rfft_getnp (pRFFT r)
 Devuelve el n�mero de puntos de los vectores de entrada.
SPL_INT API rfft_getfftnp (pRFFT r)
 Devuelve el n�mero de puntos de la FFT.
SPL_INT API rfft_getvecnp (pRFFT r)
 Devuelve el n�mero de puntos de la FFT.
XFFT_WIN API rfft_getwin (pRFFT r)
 Devuelve el tipo de enventanado utilizado.
SPL_pFLOAT API rfft_getwinvec (pRFFT r)
 Devuelve el vector que contiene la ventana.
XFFT_WIN_FUNC API rfft_getwinfunc (pRFFT r)
 Devuelve el puntero a la funci�n de enventanado suministrada por el usuario.
SPL_BOOL API rfft_getinv (pRFFT r)
 Devuelve si se est� calculando una FFT directa o inversa.
SPL_FLOAT API rfft_getufactor (pRFFT r)
 Devuelve el factor de escala aplicado.
SPL_pFLOAT API rfft_getrevec (pRFFT r)
 Acceso a la parte real de la FFT.
SPL_pFLOAT API rfft_getimvec (pRFFT r)
 Acceso a la parte imaginaria de la FFT.
SPL_VOID API rfft_rfft (pRFFT r, SPL_pFLOAT invec)
 Calcula la FFT de una secuencia real.
SPL_VOID API rfft_rfft_i (pRFFT r, SPL_pINT invec)
 Calcula la FFT de una secuencia real.
SPL_VOID API rfft_rfft_i16 (pRFFT r, pINT16 invec)
 Calcula la FFT de una secuencia real.
SPL_VOID API rfft_rfft_f32 (pRFFT r, pFLOAT32 invec)
 Calcula la FFT de una secuencia real.
SPL_VOID API rfft_rfft_i32 (pRFFT r, pINT32 invec)
 Calcula la FFT de una secuencia real.
SPL_VOID API rfft_rfft_u32 (pRFFT r, pUINT32 invec)
 Calcula la FFT de una secuencia real.
SPL_VOID API rfft_norm (pRFFT r)
 Calcula la norma de una FFT ya calculada.
SPL_VOID API rfft_mag (pRFFT r)
 Calcula el m�dulo de una FFT ya calculada.
SPL_VOID API rfft_arg (pRFFT r)
 Calcula la fase de una FFT ya calculada.
SPL_VOID API rfft_normarg (pRFFT r)
 Calcula la norma y la fase de una FFT ya calculada.
SPL_VOID API rfft_magarg (pRFFT r)
 Calcula el m�dulo y la fase de una FFT ya calculada.
SPL_VOID API rfft_trefmove_reim (pRFFT r, SPL_FLOAT nTs)
 Incorpora un retardo temporal a los valores de la FFT.
SPL_VOID API rfft_trefmove_arg (pRFFT r, SPL_FLOAT nTs)
 Incorpora un retardo temporal a los valores de la FFT.
SPL_VOID API rfft_trefmove_argm (pRFFT r, SPL_FLOAT nTs)
 Incorpora un retardo temporal a los valores de la FFT.

Tipos definidos

typedef SPL_pFLOAT(* XFFT_WIN_FUNC )(SPL_pFLOAT v, SPL_INT N)
 Definicion de la funcion de enventanado.
typedef struct _CFFT CFFT
 estructura "objeto" para FFT compleja
typedef struct _CFFT pCFFT
typedef struct _RFFT RFFT
 estructura "objeto" para FFT real
typedef struct _RFFT pRFFT
typedef struct _CEPFM CEPFM
 estructura "objeto" para cepstrum FFT-modulo
typedef struct _CEPFM pCEPFM
typedef struct _FBAND FBAND
 estructura "objeto" para potencia por bandas
typedef struct _FBAND pFBAND

Enumeraciones

enum  XFFT_WIN {
  XFFT_WIN_USER = -1, XFFT_WIN_NONE = 0, XFFT_WIN_RECT = XFFT_WIN_NONE, XFFT_WIN_HAMM,
  XFFT_WIN_HANN, XFFT_WIN_BART, XFFT_WIN_BLACK, XFFT_WIN_KAIS5,
  XFFT_WIN_KAIS6, XFFT_WIN_KAIS7, XFFT_WIN_KAIS8, XFFT_WIN_KAIS9,
  XFFT_WIN_KAIS10
}
 Codigos para funcion de enventanado. Más...
enum  XFBAND_FILTER { XFBAND_FILTER_TRIANG, XFBAND_FILTER_RECT }
 Códigos para la forma del filtro para FBAND. Más...
enum  XFBAND_SCALE {
  XFBAND_SCALE_LIN, XFBAND_SCALE_MEL, XFBAND_SCALE_BARK, XFBAND_SCALE_LOG,
  XFBAND_SCALE_LOG10, XFBAND_SCALE_BIN
}
 Códigos para la escala del filtro para FBAND. Más...

Funciones

SPL_FLOAT FbandScaleConvert (SPL_FLOAT f, XFBAND_SCALE from, XFBAND_SCALE to, SPL_FLOAT Fres)
 Conversión de escalas de frecuencia.
SPL_VOID API fband2mfcc (pFBAND r, SPL_pFLOAT mfcc, SPL_INT nceps, SPL_INT lift)
 Función para el cálculo de coeficientes MFCC a partir de FBAND.
Funciones de conversión
Funciones auxiliares de bajo nivel utilizadas internamente por FbandScaleConvert para las conversiones de frecuencia

SPL_FLOAT Hz2Log (SPL_FLOAT f)
SPL_FLOAT Log2Hz (SPL_FLOAT f)
SPL_FLOAT Hz2Log10 (SPL_FLOAT f)
SPL_FLOAT Log102Hz (SPL_FLOAT f)
SPL_FLOAT Hz2Mel (SPL_FLOAT f)
SPL_FLOAT Mel2Hz (SPL_FLOAT f)
SPL_FLOAT Hz2Bark (SPL_FLOAT f)
SPL_FLOAT Bark2Hz (SPL_FLOAT f)
SPL_FLOAT Hz2Bin (SPL_FLOAT f, SPL_FLOAT fres)
SPL_FLOAT Bin2Hz (SPL_FLOAT f, SPL_FLOAT fres)
metodos de cepstrum
pCEPFM API cepfm_construct (SPL_INT np, SPL_INT ifftnp, SPL_FLOAT ufactor, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
SPL_VOID API cepfm_destruct (pCEPFM c)
SPL_BOOL API cepfm_setwin (pCEPFM c, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
SPL_BOOL API cepfm_setnp (pCEPFM c, SPL_INT np)
SPL_BOOL API cepfm_setnpwin (pCEPFM c, SPL_INT np, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
SPL_VOID API cepfm_setufactor (pCEPFM c, SPL_FLOAT ufactor)
SPL_INT API cepfm_getnp (pCEPFM c)
SPL_INT API cepfm_getcepnp (pCEPFM c)
XFFT_WIN API cepfm_getwin (pCEPFM c)
XFFT_WIN_FUNC API cepfm_getwinfunc (pCEPFM c)
SPL_FLOAT API cepfm_getufactor (pCEPFM c)
SPL_VOID API cepfm_cepfm (pCEPFM c, SPL_pFLOAT invec)
SPL_VOID API cepfm_cepfm_i (pCEPFM c, SPL_pINT invec)
SPL_VOID API cepfm_cepfm_i16 (pCEPFM c, pINT16 invec)
SPL_VOID API cepfm_cepfm_f32 (pCEPFM c, pFLOAT32 invec)
SPL_pFLOAT API cepfm_getcepfm (pCEPFM c)
metodos de potencia por bandas
pFBAND XAPI fband_construct (SPL_INT np, SPL_INT nband, XFBAND_FILTER filter, XFBAND_SCALE scale, SPL_FLOAT minfreq, SPL_FLOAT maxfreq, SPL_FLOAT fs, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
 Inicialización de _FBAND.
SPL_VOID XAPI fband_destruct (pFBAND r)
 Destructor para una estructura _FBAND.
SPL_BOOL XAPI fband_setwin (pFBAND r, XFFT_WIN win, XFFT_WIN_FUNC winfunc)
 Modifica el tipo de enventanado.
SPL_BOOL XAPI fband_setnp (pFBAND r, SPL_INT np)
 Fija la longitud de los vectores de entrada.
SPL_BOOL XAPI fband_setnband (pFBAND r, SPL_INT nband)
 Fija el número de bandas.
SPL_BOOL XAPI fband_setfilters (pFBAND r, XFBAND_FILTER filter, XFBAND_SCALE scale)
 Cambia el tipo de filtrado.
SPL_BOOL XAPI fband_setfreqlimits (pFBAND r, SPL_FLOAT minfreq, SPL_FLOAT maxfreq)
 Cambia los límites de frecuencia.
SPL_BOOL XAPI fband_setminfreq (pFBAND r, SPL_FLOAT minfreq)
 Cambia el límite inferior de frecuencia.
SPL_BOOL XAPI fband_setmaxfreq (pFBAND r, SPL_FLOAT maxfreq)
 Cambia el límite superior de frecuencia.
SPL_BOOL XAPI fband_setsrate (pFBAND r, SPL_FLOAT srate)
 Cambia la frecuencia de muestreo de las tramas.
SPL_INT XAPI fband_getnp (pFBAND r)
 Devuelve el número de puntos de los vectores de entrada.
SPL_INT XAPI fband_getnband (pFBAND r)
 Devuelve el número de bandas.
XFFT_WIN XAPI fband_getwin (pFBAND r)
 Devuelve el tipo de enventanado utilizado.
SPL_pFLOAT XAPI fband_getwinvec (pFBAND r)
 Devuelve el vector que contiene la ventana.
XFFT_WIN_FUNC XAPI fband_getwinfunc (pFBAND r)
 Devuelve el puntero a la función de enventanado suministrada por el usuario.
SPL_pFLOAT XAPI fband_getpband (pFBAND r)
 Acceso al vector de salida.
SPL_FLOAT XAPI fband_getminfreq (pFBAND r)
 Acceso al límite inferior de frecuencia.
SPL_FLOAT XAPI fband_getmaxfreq (pFBAND r)
 Acceso al límite superior de frecuencia.
SPL_FLOAT XAPI fband_getsrate (pFBAND r)
 Acceso a la frecuencia de muestreo de las secuencias.
SPL_VOID XAPI fband_fband (pFBAND r, SPL_pFLOAT invec)
 Calcula la potencia por bandas de una secuencia.
SPL_VOID XAPI fband_fband_i (pFBAND r, SPL_pINT invec)
 Calcula la potencia por bandas de una secuencia real de valores enteros.
SPL_VOID XAPI fband_fband_i16 (pFBAND r, pINT16 invec)
 Calcula la potencia por bandas de una secuencia real de valores INT16.
SPL_VOID XAPI fband_fband_i32 (pFBAND r, pINT32 invec)
 Calcula la potencia por bandas de una secuencia real de valores INT32.
SPL_VOID XAPI fband_fband_u32 (pFBAND r, pUINT32 invec)
 Calcula la potencia por bandas de una secuencia real de valores UINT32.
SPL_VOID XAPI fband_fband_f32 (pFBAND r, pFLOAT32 invec)
 Calcula la potencia por bandas de una secuencia real de valores FLOAT32.


Descripción detallada

Copyright: 2010 - Grupo de Voz (DAET) ETSII/IT-Bilbao
Autor:
Borja Etxebarria
Versión:
1.4.0
Fecha:
02/01/97
Hay varios bloques de funciones, cada una formando una 'clase':

Las funciones estan organizadas segun los bloques indicados. Estan programadas en C estandar utilizando 'handlers', siguiendo una estructura proxima a la programacion orientada a objetos C++. Para cada 'clase' (cfft , rfft , cepfm, fband) hay una funcion constructora (???_construct()) que crea y devuelve un puntero a una estructura (CFFT, RFFT, CEPFM, FBAND) de la que no es necesario conocer nada externamente. El resto de las funciones tienen siempre como primer parametro este puntero.

Despues del uso, la estructura debe destruirse mediante la funcion ???_destruct() que libera toda la memoria reservada. El sistema es similar al utilizado por las librerias de ficheros del C (estructura FILE y funciones fopen(), fread(), fclose()). Al crear la estructura (???_construct()) se debe reservar memoria dinamica. Si no es posible el constructor devuelve un puntero a NULL. En otras funciones distintas del constructor que tambien impliquen gestion dinamica de memoria, se {devuelve} un valor booleano (SPL_BOOL) de valor SPL_TRUE si el proceso se realiza correctamente, o SPL_FALSE si no se puede completar.

Estos juegos de funciones son adecuados cuando se quiera efectuar FFT repetidamente. Primero se construye la estructura adecuada con la funcion ???_construct(), se realizan todas las FFT que se quiera y finalmente se destruye la estructura con ???_destruct(). La estructura almacena informacion reutilizable en todas las FFT que queramos efectuar (tablas de senos y cosenos, funcion de enventanado...) acelerando el proceso de calculo al no tener que calcular esta informacion en cada FFT.

Definir NDEBUG para desconectar la validacion de parametros con assert(). No definir este simbolo mientras se depuren aplicaciones, ya que aunque las funciones son algo mas lentas, el chequeo de validacion de parametros resuelve muchos problemas.

Nota:
Para la reserva de memoria dinamica se han definido en _XFFTX.H dos macros: xfft_malloc() y xfft_free(), que mapean a las funciones _malloc() y _free(), definidas en _ALLOC.H.

Definición en el archivo xfft.h.


Documentación de las definiciones

#define cfft_getnormvec (  )     cfft_getrevec(c)

Inicializa una estructura _CFFT para el c�lculo de FFT de secuencias complejas

Parámetros:
np N�mero de puntos del vector de entrada (del que se quiere calcular la FFT). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena autom�ticamente con ceros (pero ojo, no en PI sino en 2PI!!! tal vez habria que corregir esto....)
fftnp N�mero de puntos de la FFT. Ha de ser mayor o igual a cero
Si es cero, se utiliza la menor potencia de dos superior o igual a np.
Si no es cero, se utiliza la menor potencia de dos superior o igual a fftnp.
Si np es mayor que fftnp, el vector de datos se trunca a fftnp valores.
inv Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
ufactor Factor de escalado. Multiplica al resultado en la FFT directa y lo divide en la FFT inversa. Por lo general, se deja a 1 (sin escalado).
Devuelve:
Puntero a una estructura _CFFT. Este puntero deber� utilizarse como par�metro para el resto de las funciones cfft_???(). Devuelve NULL si la inicializaci�n falla

Definición en la línea 301 del archivo xfft.h.

#define cfft_getmagvec (  )     cfft_getrevec(c)

Inicializa una estructura _CFFT para el c�lculo de FFT de secuencias complejas

Parámetros:
np N�mero de puntos del vector de entrada (del que se quiere calcular la FFT). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena autom�ticamente con ceros (pero ojo, no en PI sino en 2PI!!! tal vez habria que corregir esto....)
fftnp N�mero de puntos de la FFT. Ha de ser mayor o igual a cero
Si es cero, se utiliza la menor potencia de dos superior o igual a np.
Si no es cero, se utiliza la menor potencia de dos superior o igual a fftnp.
Si np es mayor que fftnp, el vector de datos se trunca a fftnp valores.
inv Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
ufactor Factor de escalado. Multiplica al resultado en la FFT directa y lo divide en la FFT inversa. Por lo general, se deja a 1 (sin escalado).
Devuelve:
Puntero a una estructura _CFFT. Este puntero deber� utilizarse como par�metro para el resto de las funciones cfft_???(). Devuelve NULL si la inicializaci�n falla

Definición en la línea 302 del archivo xfft.h.

#define cfft_getargvec (  )     cfft_getimvec(c)

Inicializa una estructura _CFFT para el c�lculo de FFT de secuencias complejas

Parámetros:
np N�mero de puntos del vector de entrada (del que se quiere calcular la FFT). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena autom�ticamente con ceros (pero ojo, no en PI sino en 2PI!!! tal vez habria que corregir esto....)
fftnp N�mero de puntos de la FFT. Ha de ser mayor o igual a cero
Si es cero, se utiliza la menor potencia de dos superior o igual a np.
Si no es cero, se utiliza la menor potencia de dos superior o igual a fftnp.
Si np es mayor que fftnp, el vector de datos se trunca a fftnp valores.
inv Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
ufactor Factor de escalado. Multiplica al resultado en la FFT directa y lo divide en la FFT inversa. Por lo general, se deja a 1 (sin escalado).
Devuelve:
Puntero a una estructura _CFFT. Este puntero deber� utilizarse como par�metro para el resto de las funciones cfft_???(). Devuelve NULL si la inicializaci�n falla

Definición en la línea 303 del archivo xfft.h.

#define rfft_getnormvec (  )     rfft_getrevec(r)

Inicializa una estructura _RFFT para el c�lculo de FFT de secuencias reales

Parámetros:
np N�mero de puntos del vector de entrada (del que se quiere calcular la FFT). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena autom�ticamente con ceros
fftnp N�mero de puntos de la FFT. Ha de ser mayor o igual a cero
Si es cero, se utiliza la menor potencia de dos superior o igual a np.
Si no es cero, se utiliza la menor potencia de dos superior o igual a fftnp.
Si np es mayor que fftnp, el vector de datos se trunca a fftnp valores.
inv Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
ufactor Factor de escalado. Multiplica al resultado en la FFT directa y lo divide en la FFT inversa. Por lo general, se deja a 1 (sin escalado). Si vale 0, tiene un uso especial: la FFT directa se escala de forma que el modulo de la tranformada encaja con las amplitudes de las componentes (lo que haria un equipo analizador de espectro); en tal caso, 0 y pi estan realmente escaladas por dos (por interaccion entre espectro positivo y negativo. Si se hace rfft_set0piweight(TRUE) esto se corrige y 0 y pi se deescalan. Es una simplificacion, realmente habria que deescalar todos los alrededores siguiendo la respuesta de la ventana de analisis.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h (XFFT_WIN). Si se utiliza una ventana, sera de np puntos aunque si el numero de puntos de la fft es menor, se utiliza este otro valor.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
Puntero a una estructura _FFT. Este puntero deber� utilizarse como par�metro para el resto de las funciones fft_???(). Devuelve NULL si la inicializaci�n falla

Definición en la línea 345 del archivo xfft.h.

#define rfft_getmagvec (  )     rfft_getrevec(r)

Inicializa una estructura _RFFT para el c�lculo de FFT de secuencias reales

Parámetros:
np N�mero de puntos del vector de entrada (del que se quiere calcular la FFT). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena autom�ticamente con ceros
fftnp N�mero de puntos de la FFT. Ha de ser mayor o igual a cero
Si es cero, se utiliza la menor potencia de dos superior o igual a np.
Si no es cero, se utiliza la menor potencia de dos superior o igual a fftnp.
Si np es mayor que fftnp, el vector de datos se trunca a fftnp valores.
inv Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
ufactor Factor de escalado. Multiplica al resultado en la FFT directa y lo divide en la FFT inversa. Por lo general, se deja a 1 (sin escalado). Si vale 0, tiene un uso especial: la FFT directa se escala de forma que el modulo de la tranformada encaja con las amplitudes de las componentes (lo que haria un equipo analizador de espectro); en tal caso, 0 y pi estan realmente escaladas por dos (por interaccion entre espectro positivo y negativo. Si se hace rfft_set0piweight(TRUE) esto se corrige y 0 y pi se deescalan. Es una simplificacion, realmente habria que deescalar todos los alrededores siguiendo la respuesta de la ventana de analisis.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h (XFFT_WIN). Si se utiliza una ventana, sera de np puntos aunque si el numero de puntos de la fft es menor, se utiliza este otro valor.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
Puntero a una estructura _FFT. Este puntero deber� utilizarse como par�metro para el resto de las funciones fft_???(). Devuelve NULL si la inicializaci�n falla

Definición en la línea 346 del archivo xfft.h.

#define rfft_getargvec (  )     rfft_getimvec(r)

Inicializa una estructura _RFFT para el c�lculo de FFT de secuencias reales

Parámetros:
np N�mero de puntos del vector de entrada (del que se quiere calcular la FFT). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena autom�ticamente con ceros
fftnp N�mero de puntos de la FFT. Ha de ser mayor o igual a cero
Si es cero, se utiliza la menor potencia de dos superior o igual a np.
Si no es cero, se utiliza la menor potencia de dos superior o igual a fftnp.
Si np es mayor que fftnp, el vector de datos se trunca a fftnp valores.
inv Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
ufactor Factor de escalado. Multiplica al resultado en la FFT directa y lo divide en la FFT inversa. Por lo general, se deja a 1 (sin escalado). Si vale 0, tiene un uso especial: la FFT directa se escala de forma que el modulo de la tranformada encaja con las amplitudes de las componentes (lo que haria un equipo analizador de espectro); en tal caso, 0 y pi estan realmente escaladas por dos (por interaccion entre espectro positivo y negativo. Si se hace rfft_set0piweight(TRUE) esto se corrige y 0 y pi se deescalan. Es una simplificacion, realmente habria que deescalar todos los alrededores siguiendo la respuesta de la ventana de analisis.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h (XFFT_WIN). Si se utiliza una ventana, sera de np puntos aunque si el numero de puntos de la fft es menor, se utiliza este otro valor.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
Puntero a una estructura _FFT. Este puntero deber� utilizarse como par�metro para el resto de las funciones fft_???(). Devuelve NULL si la inicializaci�n falla

Definición en la línea 347 del archivo xfft.h.


Documentación de los tipos definidos

typedef SPL_pFLOAT(* XFFT_WIN_FUNC)(SPL_pFLOAT v, SPL_INT N)

Si el usuario suministra una funcion de enventanado propia (XFFT_WIN_USER), debe cumplir esta definicion.

        SPL_pFLOAT mi_funcion( SPL_pFLOAT v, SPL_INT N )

Funcion que recibe 2 parametros:

Parámetros:
v puntero a un vector de elementos de tipo SPL_FLOAT.
N entero que indica la longitud del vector anterior.
La funcion debe rellenar el vector v con los N valores de forman una ventana de longitud N.

Devuelve:
El propio puntero v

Definición en la línea 129 del archivo xfft.h.

typedef struct _CFFT CFFT

Ver también:
xfft.h xfft1.c

typedef struct _CFFT pCFFT

typedef struct _RFFT RFFT

Ver también:
xfft.h xfft2.c

typedef struct _RFFT pRFFT

typedef struct _CEPFM CEPFM

Ver también:
xfft.h xfft3.c

typedef struct _CEPFM pCEPFM

typedef struct _FBAND FBAND

Ver también:
xfft.h xfft4.c

typedef struct _FBAND pFBAND


Documentación de las enumeraciones

enum XFFT_WIN

Esta enumeración define los posibles enventanados que pueden aplicarse a la señal para la extracción de la FFT. El tipo de enventanado puede indicarse al construir una nueva estructura con ???_construct() o mediante la función ???_setwin().

Valores de la enumeración:
XFFT_WIN_USER  funcion de enventanado definida por usuario
XFFT_WIN_NONE  sin enventanado (ventana rectangular)
XFFT_WIN_RECT  sin enventanado (v. rectangular)
XFFT_WIN_HAMM  ventana de hamming
XFFT_WIN_HANN  ventana de hanning
XFFT_WIN_BART  ventana de bartlett
XFFT_WIN_BLACK  ventana de blackman
XFFT_WIN_KAIS5  ventana de kaiser, con beta=5
XFFT_WIN_KAIS6  ventana de kaiser, con beta=6
XFFT_WIN_KAIS7  ventana de kaiser, con beta=7
XFFT_WIN_KAIS8  ventana de kaiser, con beta=8
XFFT_WIN_KAIS9  ventana de kaiser, con beta=9
XFFT_WIN_KAIS10  ventana de kaiser, con beta=10

Definición en la línea 93 del archivo xfft.h.

Esta enumeración define las posibles formas de los filtros frecuenciales para la extracción de la potencia por bandas. El tipo de escala puede indicarse al construir una nueva estructura con ???_construct() o mediante la función ???_setfilter().

Valores de la enumeración:
XFBAND_FILTER_TRIANG  Filtro triangular.
XFBAND_FILTER_RECT  Filtro rectangular.

Definición en la línea 140 del archivo xfft.h.

Esta enumeración define las posibles escalas de filtrado que pueden aplicarse a la señal para la extracción de la potencia por bandas. El tipo de escala puede indicarse al construir una nueva estructura con ???_construct() o mediante la función ???_setscale().

Valores de la enumeración:
XFBAND_SCALE_LIN  Escala lineal.
XFBAND_SCALE_MEL  Escala MEL.
XFBAND_SCALE_BARK  Escala Bark.
XFBAND_SCALE_LOG  Escala logarítmica (neperiano).
XFBAND_SCALE_LOG10  Escala logarítmica (log10).
XFBAND_SCALE_BIN  Esto NO es una escala válida, pero simplifica las cosas para la función FbandScaleConvert().

Definición en la línea 154 del archivo xfft.h.


Documentación de las funciones

SPL_FLOAT FbandScaleConvert ( SPL_FLOAT  f,
XFBAND_SCALE  from,
XFBAND_SCALE  to,
SPL_FLOAT  Fres 
)

Permite convertir de forma sencilla entre las diferentes escalas de frecuencia definidas por XFBAND_SCALE: Frecuencias lineales, en escala logarítmica, escala Mel, bins de un análisis FFT...

Parámetros:
f Valor a convertir
from Escala a la que está el valor f
to Escala a la que se quiere convertir
Fres Resolución frecuencial del análisis FFT (sólo para los casos en los que from o to sean XFBAND_SCALE_BIN. Para cualquier otro caso, poner a 0)
Devuelve:
El valor f convertido a la escala to

Definición en la línea 85 del archivo xfft4.c.

SPL_FLOAT Hz2Log ( SPL_FLOAT  f  ) 

Definición en la línea 33 del archivo xfft4.c.

SPL_FLOAT Log2Hz ( SPL_FLOAT  f  ) 

Definición en la línea 36 del archivo xfft4.c.

SPL_FLOAT Hz2Log10 ( SPL_FLOAT  f  ) 

Definición en la línea 39 del archivo xfft4.c.

SPL_FLOAT Log102Hz ( SPL_FLOAT  f  ) 

Definición en la línea 42 del archivo xfft4.c.

SPL_FLOAT Hz2Mel ( SPL_FLOAT  f  ) 

Definición en la línea 45 del archivo xfft4.c.

SPL_FLOAT Mel2Hz ( SPL_FLOAT  f  ) 

Definición en la línea 48 del archivo xfft4.c.

SPL_FLOAT Hz2Bark ( SPL_FLOAT  f  ) 

Definición en la línea 51 del archivo xfft4.c.

SPL_FLOAT Bark2Hz ( SPL_FLOAT  f  ) 

Definición en la línea 59 del archivo xfft4.c.

SPL_FLOAT Hz2Bin ( SPL_FLOAT  f,
SPL_FLOAT  fres 
)

Definición en la línea 66 del archivo xfft4.c.

SPL_FLOAT Bin2Hz ( SPL_FLOAT  f,
SPL_FLOAT  fres 
)

Definición en la línea 69 del archivo xfft4.c.

SPL_VOID API fband2mfcc ( pFBAND  r,
SPL_pFLOAT  mfcc,
SPL_INT  nceps,
SPL_INT  lift 
)

Esta función aplica una DCT discreta de nceps puntos al vector de potencia por bandas contenido en r, lo que proporciona coeficientes mel cepstrum.

Parámetros:
r Puntero a la estructura _FBAND con la potencia por bandas. La potencia por bandas ya debe estar calculada (se debe haber llamado a fband_fband).
mfcc Puntero al buffer que va a recoger los coeficientes MFCC. Debe tener nceps puntos
nceps Número de coeficientes a calcular. Es igual al orden de la DCT a aplicar.
lift Coeficiente de liftering. 0 para no aplicar liftering

Definición en la línea 930 del archivo xfft4.c.

pCFFT API cfft_construct ( SPL_INT  np,
SPL_INT  fftnp,
SPL_BOOL  inv,
SPL_FLOAT  ufactor 
)

Inicializa una estructura _CFFT para el c�lculo de FFT de secuencias complejas

Parámetros:
np N�mero de puntos del vector de entrada (del que se quiere calcular la FFT). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena autom�ticamente con ceros (pero ojo, no en PI sino en 2PI!!! tal vez habria que corregir esto....)
fftnp N�mero de puntos de la FFT. Ha de ser mayor o igual a cero
Si es cero, se utiliza la menor potencia de dos superior o igual a np.
Si no es cero, se utiliza la menor potencia de dos superior o igual a fftnp.
Si np es mayor que fftnp, el vector de datos se trunca a fftnp valores.
inv Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
ufactor Factor de escalado. Multiplica al resultado en la FFT directa y lo divide en la FFT inversa. Por lo general, se deja a 1 (sin escalado).
Devuelve:
Puntero a una estructura _CFFT. Este puntero deber� utilizarse como par�metro para el resto de las funciones cfft_???(). Devuelve NULL si la inicializaci�n falla

Definición en la línea 95 del archivo xfft1.c.

SPL_VOID API cfft_destruct ( pCFFT  c  ) 

Destruye una estructura _CFFT. Es necesario llamar a esta funci�n despu�s de haber llamado a cfft_construct(), una vez se ha terminado de calcular FFT's

Parámetros:
c puntero a la estructura que se quiere destruir
Devuelve:
-

Definición en la línea 144 del archivo xfft1.c.

SPL_VOID API cfft_setnp ( pCFFT  c,
SPL_INT  np 
)

Permite modificar el n�mero de puntos de los vectores de entrada (aquellos cuya FFT se quiere calcular).

Parámetros:
c Puntero a la estructura _CFFT que se quiere modificar.
np N�mero de puntos de los vectores de entrada. Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que np sea mayor que el n�mero de puntos de la FFT, los vectores de entrada se truncan. En caso de que np sea menor que el n�mero de puntos de la FFT, se rellena con ceros
Devuelve:
-

Definición en la línea 177 del archivo xfft1.c.

SPL_VOID API cfft_setinv ( pCFFT  c,
SPL_BOOL  inv 
)

Permite indicar si se quiere calcular una FFT directa o inversa

Parámetros:
c Puntero a la estructura _CFFT que se quiere modificar.
inv,: Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
Devuelve:
-

Definición en la línea 201 del archivo xfft1.c.

SPL_VOID API cfft_setufactor ( pCFFT  c,
SPL_FLOAT  ufactor 
)

Permite cambiar el factor de escala aplicado a la FFT. Este factor multiplica al resultado en la FFT directa y lo divide en la FFT inversa

Parámetros:
c Puntero a la estructura _CFFT que se quiere modificar.
ufactor,: Factor de escalado.
Devuelve:
-

Definición en la línea 220 del archivo xfft1.c.

SPL_INT API cfft_getnp ( pCFFT  c  ) 

Permite conocer el n�mero m�nimo de puntos que han de tener los vectores de entrada (aquellos cuya FFT se quiere calcular).

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
N�mero de puntos de los vectores de entrada

Definición en la línea 237 del archivo xfft1.c.

SPL_INT API cfft_getfftnp ( pCFFT  c  ) 

Permite conocer el n�mero de puntos que tienen las FFT calculadas. Devuelve el verdadero n�mero de puntos utilizado (siempre potencia de dos)

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
N�mero de puntos de la FFT

Definición en la línea 254 del archivo xfft1.c.

SPL_INT API cfft_getvecnp ( pCFFT  c  ) 

Devuelve el n�mero de puntos de los vectores de salida. El valor devuelto coincide con cfft_getfftnp() (siempre potencia de dos).

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
N�mero de puntos de los vectores

Definición en la línea 271 del archivo xfft1.c.

SPL_BOOL API cfft_getinv ( pCFFT  c  ) 

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa

Definición en la línea 287 del archivo xfft1.c.

SPL_FLOAT API cfft_getufactor ( pCFFT  c  ) 

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
El factor de escala aplicado

Definición en la línea 301 del archivo xfft1.c.

SPL_pFLOAT API cfft_getrevec ( pCFFT  c  ) 

Permite acceder al vector de la parte real de la FFT calculada. El usuario debe haber calculado una FFT previamente. Este vector es de uso interno y no debe borrarse, aunque se puede modificar.

En caso de que se calcule el m�dulo o la norma (m�dulo al cuadrado) de la FFT, estos valores se almacenan en este mismo vector.

El vector devuelto tiene cfft_getvecnp() puntos (igual al n�mero de puntos dela FFT), y sus valores se corresponden al rango [0, 2*PI] (en herzios [0, fs])

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
Puntero al inicio del vector de la parte real de la FFT.

Definición en la línea 325 del archivo xfft1.c.

SPL_pFLOAT API cfft_getimvec ( pCFFT  c  ) 

Permite acceder al vector de la parte imaginaria de la FFT calculada. El usuario debe haber calculado una FFT previamente. Este vector es de uso interno y no debe borrarse, aunque se puede modificar.

En caso de que se calcule la fase de la FFT, estos valores se almacenan en este mismo vector.

El vector devuelto tiene cfft_getvecnp() puntos (igual al n�mero de puntos dela FFT), y sus valores se corresponden al rango [0, 2*PI] (en herzios [0, fs])

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
Puntero al inicio del vector de la parte imaginaria de la FFT.

Definición en la línea 349 del archivo xfft1.c.

SPL_VOID API cfft_cfft ( pCFFT  c,
SPL_pFLOAT  re_invec,
SPL_pFLOAT  im_invec 
)

Calcula la FFT de una secuencia compleja. La parte real de esta FFT puede recuperarse mediante cfft_getrvec(), y la parte imaginaria mediante cfft_getimvec().

Parámetros:
c Puntero a la estructura _CFFT.
re_invec Vector que contiene la parte real de la secuencia cuya FFT se quiere calcular. Debe tener cfft_getnp() puntos.
im_invec Vector que contiene la parte imaginaria de la secuencia cuya FFT se quiere calcular. Debe tener cfft_getnp() puntos.
Devuelve:
-

Definición en la línea 396 del archivo xfft1.c.

SPL_VOID API cfft_norm ( pCFFT  c  ) 

Una vez calculada una FFT, permite extraer la norma (m�dulo al cuadrado) de la misma. El resultado se introduce en el vector de la parte real de la FFT, de forma que posteriormente es accesible mediante cfft_getrevec().

Nota:
Una vez llamada esta funci�n, se pierde la parte real. Por lo tanto, ya no se puede recuperar esta parte real ni se puede calcular la fase.
Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
-

Definición en la línea 442 del archivo xfft1.c.

SPL_VOID API cfft_mag ( pCFFT  c  ) 

Una vez calculada una FFT, permite extraer el m�dulo de la misma. El resultado se introduce en el vector de la parte real de la FFT, de forma que posteriormente es accesible mediante cfft_getrevec().

Nota:
Una vez llamada esta funci�n, se pierde la parte real. Por lo tanto, ya no se puede recuperar esta parte real ni se puede calcular la fase.
Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
-

Definición en la línea 418 del archivo xfft1.c.

SPL_VOID API cfft_arg ( pCFFT  c  ) 

Una vez calculada una FFT, permite extraer la fase de la misma. El resultado se introduce en el vector de la parte imaginaria de la FFT, de forma que posteriormente es accesible mediante cfft_getimvec().

Nota:
Una vez llamada esta funci�n, se pierde la parte imaginaria. Por lo tanto, ya no se puede recuperar esta parte imaginaria ni se puede calcular el m�dulo.
Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
-

Definición en la línea 466 del archivo xfft1.c.

SPL_VOID API cfft_normarg ( pCFFT  c  ) 

Una vez calculada una FFT, permite extraer la norma (m�dulo al cuadrado) y la fase de la misma. La norma se introduce en el vector de la parte real de la FFT, y la fase en el vector de la parte imaginaria, de forma que posteriormente son accesibles mediante cfft_getrevec() y cfft_getimvec() respectivamente.

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
-

Definición en la línea 514 del archivo xfft1.c.

SPL_VOID API cfft_magarg ( pCFFT  c  ) 

Una vez calculada una FFT, permite extraer el m�dulo y la fase de la misma. El m�dulo se introduce en el vector de la parte real de la FFT, y la fase en el vector de la parte imaginaria, de forma que posteriormente son accesibles mediante cfft_getrevec() y cfft_getimvec() respectivamente.

Parámetros:
c Puntero a la estructura _CFFT.
Devuelve:
-

Definición en la línea 488 del archivo xfft1.c.

SPL_VOID API cfft_trefmove_reim ( pCFFT  c,
SPL_FLOAT  nTs 
)

Una vez efectuada una FFT corrige los vectores real e imaginario para incorporar un retardo al origen de fases (p.ej. un retardo de N/2 muestras avanzaria el origen de fases al centro de la venana de analisis de N puntos). No es mas que una fase lineal positiva.

Esta funcion, solo debe utilizarse mientras se mantengan los vectores real e imaginario. Una vez calculado el modulo, norma o fase, en vez de esta hay que usar cfft_trefmove_arg().

Nota:
Esta funcion es poco eficiente. El retardo de fase es mejor incorporarlo directamente sobre la fase con cfft_trefmove_arg().
Parámetros:
c Puntero a la estructura _CFFT.
nTs N�mero de muestras a retardar. Puede ser un valor fraccionario.
Devuelve:
-

Definición en la línea 550 del archivo xfft1.c.

SPL_VOID API cfft_trefmove_arg ( pCFFT  c,
SPL_FLOAT  nTs 
)

Una vez efectuada una FFT y calculada la fase, corrige el vector de fase para incorporar un retardo al origen de fases (p.ej. retardar N/2 muestras avanzaria el origen de fases al centro de la ventana de analisis de N puntos). No es mas que una fase lineal positiva.

Esta funcion, solo debe utilizarse una vez calculada la fase. Si se quiere incorporar el retardo antes, sobre los vectores real e imaginario se debe utilizar cfft_trefmove_reim().

La fase resultante ya NO sera el valor principal de fase (entre -PI y PI). Si quieres el valor principal, usa cfft_trefmove_argm(),

Parámetros:
c Puntero a la estructura _CFFT.
nTs N�mero de muestras a retardar. Puede ser un valor fraccionario.
Devuelve:
-

Definición en la línea 589 del archivo xfft1.c.

SPL_VOID API cfft_trefmove_argm ( pCFFT  c,
SPL_FLOAT  nTs 
)

Una vez efectuada una FFT y calculada la fase, corrige el vector de fase para incorporar un retardo al origen de fases (p.ej. retardar N/2 muestras avanzaria el origen de fases al centro de la ventana de analisis de N puntos). No es mas que una fase lineal positiva.

Esta funcion, solo debe utilizarse una vez calculada la fase. Si se quiere incorporar el retardo antes, sobre los vectores real e imaginario se debe utilizar cfft_trefmove_reim().

La fase resultante sigue siendo el valor principal de fase, y se mantiene entre -PI y PI.

Parámetros:
c Puntero a la estructura _CFFT.
nTs N�mero de muestras a retardar. Puede ser un valor fraccionario.
Devuelve:
-

Definición en la línea 621 del archivo xfft1.c.

pRFFT API rfft_construct ( SPL_INT  np,
SPL_INT  fftnp,
SPL_BOOL  inv,
SPL_FLOAT  ufactor,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Inicializa una estructura _RFFT para el c�lculo de FFT de secuencias reales

Parámetros:
np N�mero de puntos del vector de entrada (del que se quiere calcular la FFT). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena autom�ticamente con ceros
fftnp N�mero de puntos de la FFT. Ha de ser mayor o igual a cero
Si es cero, se utiliza la menor potencia de dos superior o igual a np.
Si no es cero, se utiliza la menor potencia de dos superior o igual a fftnp.
Si np es mayor que fftnp, el vector de datos se trunca a fftnp valores.
inv Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
ufactor Factor de escalado. Multiplica al resultado en la FFT directa y lo divide en la FFT inversa. Por lo general, se deja a 1 (sin escalado). Si vale 0, tiene un uso especial: la FFT directa se escala de forma que el modulo de la tranformada encaja con las amplitudes de las componentes (lo que haria un equipo analizador de espectro); en tal caso, 0 y pi estan realmente escaladas por dos (por interaccion entre espectro positivo y negativo. Si se hace rfft_set0piweight(TRUE) esto se corrige y 0 y pi se deescalan. Es una simplificacion, realmente habria que deescalar todos los alrededores siguiendo la respuesta de la ventana de analisis.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h (XFFT_WIN). Si se utiliza una ventana, sera de np puntos aunque si el numero de puntos de la fft es menor, se utiliza este otro valor.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
Puntero a una estructura _FFT. Este puntero deber� utilizarse como par�metro para el resto de las funciones fft_???(). Devuelve NULL si la inicializaci�n falla

Definición en la línea 73 del archivo xfft2.c.

SPL_VOID API rfft_destruct ( pRFFT  r  ) 

Destruye una estructura _RFFT. Es necesario llamar a esta funci�n despu�s de haber llamado a rfft_construct(), una vez se ha terminado de calcular FFT's

Parámetros:
r puntero a la estructura que se quiere destruir
Devuelve:
-

Definición en la línea 150 del archivo xfft2.c.

SPL_BOOL API rfft_setwin ( pRFFT  r,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Modifica el tipo de enventanado a utilizar. Los tipos de ventanas est�n definidos en xfft.h (XFFT_WIN). Si se indica ventana XFFT_WIN_NONE o XFFT_WIN_RECT, se usa ventana rectangular. Si se indica XFFT_WIN_USER, entonces se utilizara la ventana obtenida a traves de la funcion que el usuario suministra. En xfft.h se explica el prototipo que debe seguir esta funcion.

La ventana se maneja de forma optimizada: aunque se active y desactive sucesivamente no se hace ni una cuenta mientras no se cambie su longitud o se cambie de tipo de ventana.

Parámetros:
r Puntero a la estructura _RFFT que se quiere modificar.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
SPL_TRUE si todo ha ido bien. SPLA_FALSE si se ha producido un error, en cuyo caso, la ventana se desconecta y se utiliza ventana rectangular.

Definición en la línea 198 del archivo xfft2.c.

SPL_BOOL API rfft_setnp ( pRFFT  r,
SPL_INT  np 
)

Permite modificar el n�mero de puntos de los vectores de entrada (aquellos cuya FFT se quiere calcular).

Parámetros:
r Puntero a la estructura _RFFT que se quiere modificar.
np N�mero de puntos de los vectores de entrada. Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que np sea mayor que el n�mero de puntos de la FFT, los vectores de entrada se truncan. En caso de que np sea menor que el n�mero de puntos de la FFT, se rellena con ceros
Devuelve:
SPL_TRUE si todo ha ido bien. SPLA_FALSE si se ha producido un error, en cuyo caso, la ventana se desconecta y se utiliza ventana rectangular.

Definición en la línea 296 del archivo xfft2.c.

SPL_BOOL API rfft_setnpwin ( pRFFT  r,
SPL_INT  np,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Modifica el tipo de enventanado y la longitud de los vectores de entrada de forma simult�nea. Los tipos de ventanas est�n definidos en xfft.h XFFT_WIN. Si se indica ventana XFFT_WIN_NONE o XFFT_WIN_RECT, se usa ventana rectangular. Si se indica XFFT_WIN_USER, entonces se utilizara la ventana obtenida a traves de la funcion que el usuario suministra. En xfft.h se explica el prototipo que debe seguir esta funcion.

La ventana se maneja de forma optimizada: aunque se active y desactive sucesivamente no se hace ni una cuenta mientras no se cambie su longitud o se cambie de tipo de ventana.

Parámetros:
r Puntero a la estructura _RFFT que se quiere modificar.
np N�mero de puntos de los vectores de entrada. Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que np sea mayor que el n�mero de puntos de la FFT, los vectores de entrada se truncan. En caso de que np sea menor que el n�mero de puntos de la FFT, se rellena con ceros
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
SPL_TRUE si todo ha ido bien. SPLA_FALSE si se ha producido un error, en cuyo caso, la ventana se desconecta y se utiliza ventana rectangular.

Definición en la línea 349 del archivo xfft2.c.

SPL_VOID API rfft_setinv ( pRFFT  r,
SPL_BOOL  inv 
)

Permite indicar si se quiere calcular una FFT directa o inversa

Parámetros:
r Puntero a la estructura _RFFT que se quiere modificar.
inv,: Indica si se desea calcular la transformada directa o inversa.
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa
Devuelve:
-

Definición en la línea 373 del archivo xfft2.c.

SPL_VOID API rfft_setufactor ( pRFFT  r,
SPL_FLOAT  ufactor 
)

Permite cambiar el factor de escala aplicado a la FFT. Este factor multiplica al resultado en la FFT directa y lo divide en la FFT inversa

Parámetros:
r Puntero a la estructura _RFFT que se quiere modificar.
ufactor,: Factor de escalado.
Devuelve:
-

Definición en la línea 392 del archivo xfft2.c.

SPL_VOID API rfft_set0piweight ( pRFFT  r,
SPL_BOOL  weight 
)

escala por 1/2 en la fft directa, por 2 en la inversa. Para que funcione el factor de usuario ufactor debe ser 0.

Parámetros:
r Puntero a la estructura _RFFT que se quiere modificar.
weight booleano para activar o desactivar el factor de ponderaci�n
Devuelve:
-

Definición en la línea 411 del archivo xfft2.c.

SPL_BOOL API rfft_get0piweight ( pRFFT  r  ) 

Devuelve el estado del factor de ponderaci�n. Realmente este factor s�lo estar� activado si el factor de usuario ufactor es cero

Parámetros:
r Puntero a la estructura _RFFT que se quiere modificar.
Devuelve:
SPL_TRUE si el factor de ponderaci�n est� activado. SPL_FALSE si no.

Definición en la línea 428 del archivo xfft2.c.

SPL_INT API rfft_getnp ( pRFFT  r  ) 

Permite conocer el n�mero m�nimo de puntos que han de tener los vectores de entrada (aquellos cuya FFT se quiere calcular).

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
N�mero de puntos de los vectores de entrada

Definición en la línea 445 del archivo xfft2.c.

SPL_INT API rfft_getfftnp ( pRFFT  r  ) 

Permite conocer el n�mero de puntos que tienen las FFT calculadas. Devuelve el verdadero n�mero de puntos utilizado (siempre potencia de dos)

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
N�mero de puntos de la FFT

Definición en la línea 467 del archivo xfft2.c.

SPL_INT API rfft_getvecnp ( pRFFT  r  ) 

Devuelve el n�mero de puntos de los vectores de salida. Puesto que una FFT real es sim�trica en la parte real y antisim�trica en la parte imaginaria, los vectores de resultado s�lo tienen la mitad de puntos de la FFT. Es decir: rfft_getvecnp() = rfft_getfftnp()/2 + 1.

Por tanto, los vectores resultado abarcan el rango [0, PI] (en herzios, [0, fs/2]).

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
N�mero de puntos de los vectores

Definición en la línea 489 del archivo xfft2.c.

XFFT_WIN API rfft_getwin ( pRFFT  r  ) 

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
Tipo de ventana (los tipos est�n definidos en xfft.h)

Definición en la línea 503 del archivo xfft2.c.

SPL_pFLOAT API rfft_getwinvec ( pRFFT  r  ) 

Permite acceder al vector que contiene la ventana utilizada. La longitud de esta ventana viene dada por rfft_getnp().

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
Puntero al vector que contiene la ventana. En caso de que no se utilice ventana, se devuelve NULL.

Definición en la línea 521 del archivo xfft2.c.

XFFT_WIN_FUNC API rfft_getwinfunc ( pRFFT  r  ) 

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
Puntero a la funci�n de enventanado suministrada por el usuario

Definición en la línea 537 del archivo xfft2.c.

SPL_BOOL API rfft_getinv ( pRFFT  r  ) 

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
  • SPL_FALSE o FFT_DIRECT: FFT directa
  • SPL_TRUE o FFT_INVERSE: FFT inversa

Definición en la línea 553 del archivo xfft2.c.

SPL_FLOAT API rfft_getufactor ( pRFFT  r  ) 

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
El factor de escala aplicado

Definición en la línea 567 del archivo xfft2.c.

SPL_pFLOAT API rfft_getrevec ( pRFFT  r  ) 

Permite acceder al vector de la parte real de la FFT calculada. El usuario debe haber calculado una FFT previamente. Este vector es de uso interno y no debe borrarse, aunque se puede modificar.

En caso de que se calcule el m�dulo o la norma (m�dulo al cuadrado) de la FFT, estos valores se almacenan en este mismo vector.

El vector devuelto tiene rfft_getvecnp() puntos, y sus valores se corresponden al rango [0, PI] (en herzios [0, fs/2])

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
Puntero al inicio del vector de la parte real de la FFT.

Definición en la línea 591 del archivo xfft2.c.

SPL_pFLOAT API rfft_getimvec ( pRFFT  r  ) 

Permite acceder al vector de la parte imaginaria de la FFT calculada. El usuario debe haber calculado una FFT previamente. Este vector es de uso interno y no debe borrarse, aunque se puede modificar.

En caso de que se calcule la fase de la FFT, estos valores se almacenan en este mismo vector.

El vector devuelto tiene rfft_getvecnp() puntos, y sus valores se corresponden al rango [0, PI] (en herzios [0, fs/2])

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
Puntero al inicio del vector de la parte imaginaria de la FFT.

Definición en la línea 615 del archivo xfft2.c.

SPL_VOID API rfft_rfft ( pRFFT  r,
SPL_pFLOAT  invec 
)

Calcula la FFT de una secuencia real de valores flotantes. La parte real de esta FFT puede recuperarse mediante rfft_getrvec(), y la parte imaginaria mediante rfft_getimvec().

Parámetros:
r Puntero a la estructura _RFFT.
invec Vector que contiene la secuencia de valores flotantes cuya FFT se quiere calcular. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 713 del archivo xfft2.c.

SPL_VOID API rfft_rfft_i ( pRFFT  r,
SPL_pINT  invec 
)

Calcula la FFT de una secuencia real de valores enteros. La parte real de esta FFT puede recuperarse mediante rfft_getrvec(), y la parte imaginaria mediante rfft_getimvec().

Parámetros:
r Puntero a la estructura _RFFT.
invec Vector que contiene la secuencia de valores enteros cuya FFT se quiere calcular. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 733 del archivo xfft2.c.

SPL_VOID API rfft_rfft_i16 ( pRFFT  r,
pINT16  invec 
)

Calcula la FFT de una secuencia real de valores INT16. La parte real de esta FFT puede recuperarse mediante rfft_getrvec(), y la parte imaginaria mediante rfft_getimvec().

Parámetros:
r Puntero a la estructura _RFFT.
invec Vector que contiene la secuencia de valores INT16 cuya FFT se quiere calcular. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 753 del archivo xfft2.c.

SPL_VOID API rfft_rfft_f32 ( pRFFT  r,
pFLOAT32  invec 
)

Calcula la FFT de una secuencia real de valores FLOAT32 flotantes. La parte real de esta FFT puede recuperarse mediante rfft_getrvec(), y la parte imaginaria mediante rfft_getimvec().

Parámetros:
r Puntero a la estructura _RFFT.
invec Vector que contiene la secuencia de valores FLOAT32 cuya FFT se quiere calcular. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 814 del archivo xfft2.c.

SPL_VOID API rfft_rfft_i32 ( pRFFT  r,
pINT32  invec 
)

Calcula la FFT de una secuencia real de valores INT32. La parte real de esta FFT puede recuperarse mediante rfft_getrvec(), y la parte imaginaria mediante rfft_getimvec().

Parámetros:
r Puntero a la estructura _RFFT.
invec Vector que contiene la secuencia de valores INT32 cuya FFT se quiere calcular. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 774 del archivo xfft2.c.

SPL_VOID API rfft_rfft_u32 ( pRFFT  r,
pUINT32  invec 
)

Calcula la FFT de una secuencia real de valores UINT32. La parte real de esta FFT puede recuperarse mediante rfft_getrvec(), y la parte imaginaria mediante rfft_getimvec().

Parámetros:
r Puntero a la estructura _RFFT.
invec Vector que contiene la secuencia de valores UINT32 cuya FFT se quiere calcular. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 794 del archivo xfft2.c.

SPL_VOID API rfft_norm ( pRFFT  r  ) 

Una vez calculada una FFT, permite extraer la norma (m�dulo al cuadrado) de la misma. El resultado se introduce en el vector de la parte real de la FFT, de forma que posteriormente es accesible mediante rfft_getrevec().

Nota:
Una vez llamada esta funci�n, se pierde la parte real. Por lo tanto, ya no se puede recuperar esta parte real ni se puede calcular la fase.
Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
-

Definición en la línea 859 del archivo xfft2.c.

SPL_VOID API rfft_mag ( pRFFT  r  ) 

Una vez calculada una FFT, permite extraer el m�dulo de la misma. El resultado se introduce en el vector de la parte real de la FFT, de forma que posteriormente es accesible mediante rfft_getrevec().

Nota:
Una vez llamada esta funci�n, se pierde la parte real. Por lo tanto, ya no se puede recuperar esta parte real ni se puede calcular la fase.
Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
-

Definición en la línea 835 del archivo xfft2.c.

SPL_VOID API rfft_arg ( pRFFT  r  ) 

Una vez calculada una FFT, permite extraer la fase de la misma. El resultado se introduce en el vector de la parte imaginaria de la FFT, de forma que posteriormente es accesible mediante rfft_getimvec().

Nota:
Una vez llamada esta funci�n, se pierde la parte imaginaria. Por lo tanto, ya no se puede recuperar esta parte imaginaria ni se puede calcular el m�dulo.
Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
-

Definición en la línea 883 del archivo xfft2.c.

SPL_VOID API rfft_normarg ( pRFFT  r  ) 

Una vez calculada una FFT, permite extraer la norma (m�dulo al cuadrado) y la fase de la misma. La norma se introduce en el vector de la parte real de la FFT, y la fase en el vector de la parte imaginaria, de forma que posteriormente son accesibles mediante rfft_getrevec() y rfft_getimvec() respectivamente.

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
-

Definición en la línea 931 del archivo xfft2.c.

SPL_VOID API rfft_magarg ( pRFFT  r  ) 

Una vez calculada una FFT, permite extraer el m�dulo y la fase de la misma. El m�dulo se introduce en el vector de la parte real de la FFT, y la fase en el vector de la parte imaginaria, de forma que posteriormente son accesibles mediante rfft_getrevec() y rfft_getimvec() respectivamente.

Parámetros:
r Puntero a la estructura _RFFT.
Devuelve:
-

Definición en la línea 905 del archivo xfft2.c.

SPL_VOID API rfft_trefmove_reim ( pRFFT  r,
SPL_FLOAT  nTs 
)

Una vez efectuada una FFT corrige los vectores real e imaginario para incorporar un retardo al origen de fases (p.ej. un retardo de N/2 muestras avanzaria el origen de fases al centro de la venana de analisis de N puntos). No es mas que una fase lineal positiva.

Esta funcion, solo debe utilizarse mientras se mantengan los vectores real e imaginario. Una vez calculado el modulo, norma o fase, en vez de esta hay que usar rfft_trefmove_arg().

Nota:
Esta funcion es poco eficiente. El retardo de fase es mejor incorporarlo directamente sobre la fase con rfft_trefmove_arg().
Parámetros:
r Puntero a la estructura _RFFT.
nTs N�mero de muestras a retardar. Puede ser un valor fraccionario.
Devuelve:
-

Definición en la línea 967 del archivo xfft2.c.

SPL_VOID API rfft_trefmove_arg ( pRFFT  r,
SPL_FLOAT  nTs 
)

Una vez efectuada una FFT y calculada la fase, corrige el vector de fase para incorporar un retardo al origen de fases (p.ej. retardar N/2 muestras avanzaria el origen de fases al centro de la ventana de analisis de N puntos). No es mas que una fase lineal positiva.

Esta funcion, solo debe utilizarse una vez calculada la fase. Si se quiere incorporar el retardo antes, sobre los vectores real e imaginario se debe utilizar rfft_trefmove_reim().

La fase resultante ya NO sera el valor principal de fase (entre -PI y PI). Si quieres el valor principal, usa rfft_trefmove_argm(),

Parámetros:
r Puntero a la estructura _RFFT.
nTs N�mero de muestras a retardar. Puede ser un valor fraccionario.
Devuelve:
-

Definición en la línea 1006 del archivo xfft2.c.

SPL_VOID API rfft_trefmove_argm ( pRFFT  r,
SPL_FLOAT  nTs 
)

Una vez efectuada una FFT y calculada la fase, corrige el vector de fase para incorporar un retardo al origen de fases (p.ej. retardar N/2 muestras avanzaria el origen de fases al centro de la ventana de analisis de N puntos). No es mas que una fase lineal positiva.

Esta funcion, solo debe utilizarse una vez calculada la fase. Si se quiere incorporar el retardo antes, sobre los vectores real e imaginario se debe utilizar rfft_trefmove_reim().

La fase resultante sigue siendo el valor principal de fase, y se mantiene entre -PI y PI.

Parámetros:
r Puntero a la estructura _RFFT.
nTs N�mero de muestras a retardar. Puede ser un valor fraccionario.
Devuelve:
-

Definición en la línea 1038 del archivo xfft2.c.

pCEPFM API cepfm_construct ( SPL_INT  np,
SPL_INT  ifftnp,
SPL_FLOAT  ufactor,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Definición en la línea 82 del archivo xfft3.c.

SPL_VOID API cepfm_destruct ( pCEPFM  c  ) 

Definición en la línea 124 del archivo xfft3.c.

SPL_BOOL API cepfm_setwin ( pCEPFM  c,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Definición en la línea 156 del archivo xfft3.c.

SPL_BOOL API cepfm_setnp ( pCEPFM  c,
SPL_INT  np 
)

Definición en la línea 177 del archivo xfft3.c.

SPL_BOOL API cepfm_setnpwin ( pCEPFM  c,
SPL_INT  np,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Definición en la línea 190 del archivo xfft3.c.

SPL_VOID API cepfm_setufactor ( pCEPFM  c,
SPL_FLOAT  ufactor 
)

Definición en la línea 201 del archivo xfft3.c.

SPL_INT API cepfm_getnp ( pCEPFM  c  ) 

Definición en la línea 212 del archivo xfft3.c.

SPL_INT API cepfm_getcepnp ( pCEPFM  c  ) 

Definición en la línea 223 del archivo xfft3.c.

XFFT_WIN API cepfm_getwin ( pCEPFM  c  ) 

Definición en la línea 235 del archivo xfft3.c.

XFFT_WIN_FUNC API cepfm_getwinfunc ( pCEPFM  c  ) 

Definición en la línea 246 del archivo xfft3.c.

SPL_FLOAT API cepfm_getufactor ( pCEPFM  c  ) 

Definición en la línea 256 del archivo xfft3.c.

SPL_VOID API cepfm_cepfm ( pCEPFM  c,
SPL_pFLOAT  invec 
)

Definición en la línea 327 del archivo xfft3.c.

SPL_VOID API cepfm_cepfm_i ( pCEPFM  c,
SPL_pINT  invec 
)

Definición en la línea 339 del archivo xfft3.c.

SPL_VOID API cepfm_cepfm_i16 ( pCEPFM  c,
pINT16  invec 
)

Definición en la línea 351 del archivo xfft3.c.

SPL_VOID API cepfm_cepfm_f32 ( pCEPFM  c,
pFLOAT32  invec 
)

Definición en la línea 363 del archivo xfft3.c.

SPL_pFLOAT API cepfm_getcepfm ( pCEPFM  c  ) 

Definición en la línea 271 del archivo xfft3.c.

pFBAND XAPI fband_construct ( SPL_INT  np,
SPL_INT  nband,
XFBAND_FILTER  filter,
XFBAND_SCALE  scale,
SPL_FLOAT  minfreq,
SPL_FLOAT  maxfreq,
SPL_FLOAT  fs,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Inicializa una estructura _FBAND para el cálculo de potencia por bandas

Parámetros:
np Número de puntos del vector de entrada (del que se quiere calcular la potencia por bandas). Ha de ser mayor que cero, pero no forzosamente potencia de dos. En caso de que no sea potencia de dos, se rellena automáticamente con ceros
nband Número de bandas. Ha de ser mayor acero
filter Forma del filtro de frecuencia a aplicar
scale Escala en la que se deben distribuir las bandas. En escala lineal (XFBAND_SCALE_LIN) todos los filtros tienen el mismo ancho de banda y están equiespaciados. En otras escalas los filtros tienen el mismo ancho de banda y están equiespaciados si las frecuencias se miden en la escala indicada. Esto significa que, vistos en Herzios, su ancho de banda y su posición varía con la frecuencia.
minfreq Frecuencia mínima a considerar (eh Hz). Los nband filtros se distribuyen entre minfreq y maxfreq.
maxfreq Frecuencia máxima a considerar (eh Hz). Los nband filtros se distribuyen entre minfreq y maxfreq. Si se deja a 0 se considera la frecuencia de Nyquist=fs/2
fs Frecuencia de muestreo de la señal de entrada. Necesario para poder calcular a qué frecuencia corresponde cada bin FFT.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h (XFFT_WIN). Si se utiliza una ventana, sera de np puntos aunque si el numero de puntos de la fft es menor, se utiliza este otro valor.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
Puntero a una estructura _FBAND. Este puntero deberá utilizarse como parámetro para el resto de las funciones fband_???(). Devuelve NULL si la inicialización falla

Definición en la línea 282 del archivo xfft4.c.

SPL_VOID XAPI fband_destruct ( pFBAND  r  ) 

Destruye una estructura _FBAND. Es necesario llamar a esta función después de haber llamado a fband_construct(), una vez se ha terminado de calcular las potencias por banda

Parámetros:
r puntero a la estructura que se quiere destruir
Devuelve:
-

Definición en la línea 346 del archivo xfft4.c.

SPL_BOOL XAPI fband_setwin ( pFBAND  r,
XFFT_WIN  win,
XFFT_WIN_FUNC  winfunc 
)

Modifica el tipo de enventanado a utilizar. Los tipos de ventanas están definidos en xfft.h (XFFT_WIN). Si se indica ventana XFFT_WIN_NONE o XFFT_WIN_RECT, se usa ventana rectangular. Si se indica XFFT_WIN_USER, entonces se utilizara la ventana obtenida a traves de la funcion que el usuario suministra. En xfft.h se explica el prototipo que debe seguir esta funcion.

La ventana se maneja de forma optimizada: aunque se active y desactive sucesivamente no se hace ni una cuenta mientras no se cambie su longitud o se cambie de tipo de ventana.

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
win Codigo que identifica el tipo de ventana a utilizar. Estos tipos est�n definidos en xfft.h.
winfunc Puntero a una funcion que que suministra el usuario, y que sigue el prototipo indicado (xfft.h). Esta funcion se utiliza para obtener la ventana cuando en win se envia XFFT_WIN_USER. Si este puntero es NULL y se envia XFFT_WIN_USER en win, no se utiliza ningun enventanado (ventana rectangular).
Devuelve:
SPL_TRUE si todo ha ido bien. SPLA_FALSE si se ha producido un error, en cuyo caso, la ventana se desconecta y se utiliza ventana rectangular.

Definición en la línea 388 del archivo xfft4.c.

SPL_BOOL XAPI fband_setnp ( pFBAND  r,
SPL_INT  np 
)

Permite modificar el número de puntos de los vectores de entrada (aquellos cuya potencia por bandas se quiere calcular).

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
np Número de puntos de los vectores de entrada. Ha de ser mayor que cero, pero no forzosamente potencia de dos.
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 410 del archivo xfft4.c.

SPL_BOOL XAPI fband_setnband ( pFBAND  r,
SPL_INT  nband 
)

Permite modificar el número de bandas de frecuencia

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
nband Número de bandas. Ha de ser mayor que cero.
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 440 del archivo xfft4.c.

SPL_BOOL XAPI fband_setfilters ( pFBAND  r,
XFBAND_FILTER  filter,
XFBAND_SCALE  scale 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
filter Forma del filtro que se quiere aplicar
scale Escala en la que calcular los filtros
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 464 del archivo xfft4.c.

SPL_BOOL XAPI fband_setfreqlimits ( pFBAND  r,
SPL_FLOAT  minfreq,
SPL_FLOAT  maxfreq 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
minfreq Frecuencia mínima a considerar (eh Hz).
maxfreq Frecuencia máxima a considerar (eh Hz).
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 486 del archivo xfft4.c.

SPL_BOOL XAPI fband_setminfreq ( pFBAND  r,
SPL_FLOAT  minfreq 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
minfreq Frecuencia mínima a considerar (eh Hz).
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 524 del archivo xfft4.c.

SPL_BOOL XAPI fband_setmaxfreq ( pFBAND  r,
SPL_FLOAT  maxfreq 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
maxfreq Frecuencia máxima a considerar (eh Hz).
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 542 del archivo xfft4.c.

SPL_BOOL XAPI fband_setsrate ( pFBAND  r,
SPL_FLOAT  srate 
)

Parámetros:
r Puntero a la estructura _FBAND que se quiere modificar.
maxfreq Frecuencia de muestreo (eh Hz).
Devuelve:
SPL_TRUE si todo ha ido bien. SPL_FALSE si se ha producido un error, en cuyo caso posiblemente la clase haya quedado inservible.

Definición en la línea 561 del archivo xfft4.c.

SPL_INT XAPI fband_getnp ( pFBAND  r  ) 

Permite conocer el número mínimo de puntos que han de tener los vectores de entrada (aquellos cuya potencia por bandas se quiere calcular).

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Número de puntos de los vectores de entrada

Definición en la línea 585 del archivo xfft4.c.

SPL_INT XAPI fband_getnband ( pFBAND  r  ) 

Permite conocer el número de bandas que se están utilizando. Esto coincide con el número de puntos del vector de salida

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Número de bandas

Definición en la línea 602 del archivo xfft4.c.

XFFT_WIN XAPI fband_getwin ( pFBAND  r  ) 

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Tipo de ventana (los tipos están definidos en xfft.h)

Definición en la línea 617 del archivo xfft4.c.

SPL_pFLOAT XAPI fband_getwinvec ( pFBAND  r  ) 

Permite acceder al vector que contiene la ventana utilizada. La longitud de esta ventana viene dada por fband_getnp().

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Puntero al vector que contiene la ventana. En caso de que no se utilice ventana, se devuelve NULL.

Definición en la línea 635 del archivo xfft4.c.

XFFT_WIN_FUNC XAPI fband_getwinfunc ( pFBAND  r  ) 

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Puntero a la función de enventanado suministrada por el usuario

Definición en la línea 649 del archivo xfft4.c.

SPL_pFLOAT XAPI fband_getpband ( pFBAND  r  ) 

Permite acceder al vector de la potencia por bandas calculada. El usuario debe haber calculado una potencia por bandas previamente. Este vector es de uso interno y no debe borrarse, aunque se puede modificar.

El vector devuelto tiene fband_getvecnp() puntos

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Puntero al vector de potencias por banda

Definición en la línea 670 del archivo xfft4.c.

SPL_FLOAT XAPI fband_getminfreq ( pFBAND  r  ) 

Permite conocer el límite inferior de frecuencia. La potencia por bandas se está calculando con fband_getvecnp() bandas situadas entre fband_getminfreq() y fband_getmaxfreq().

Devuelve la verdadera frecuencia inferior, que puede verse modificada con respecto a la indicada en fband_construct() o fband_setfreqlimits() debido a la resolución frecuencial de la FFT.

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Límite inferior de la frecuencia

Definición en la línea 692 del archivo xfft4.c.

SPL_FLOAT XAPI fband_getmaxfreq ( pFBAND  r  ) 

Permite conocer el límite superior de frecuencia. La potencia por bandas se está calculando con fband_getvecnp() bandas situadas entre fband_getminfreq() y fband_getmaxfreq().

Devuelve la verdadera frecuencia superior, que puede verse modificada con respecto a la indicada en fband_construct() o fband_setfreqlimits() debido a la resolución frecuencial de la FFT.

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Límite superior de la frecuencia

Definición en la línea 714 del archivo xfft4.c.

SPL_FLOAT XAPI fband_getsrate ( pFBAND  r  ) 

Parámetros:
r Puntero a la estructura _FBAND.
Devuelve:
Frecuencia de muestreo en Hz

Definición en la línea 729 del archivo xfft4.c.

SPL_VOID XAPI fband_fband ( pFBAND  r,
SPL_pFLOAT  invec 
)

Calcula la potencia por bandas de una secuencia real de valores flotantes. Esta potencia por bandas puede recuperarse mediante fband_getpband()

Previamente se ha tenido que construir la estructura FBAND mediante fband_construct().

Parámetros:
r Puntero a la estructura _FBAND.
invec Vector que contiene la secuencia de valores flotantes cuya potencia por bandas se quiere calcular. Debe tener fband_getnp() puntos.
Devuelve:
-

Definición en la línea 792 del archivo xfft4.c.

SPL_VOID XAPI fband_fband_i ( pFBAND  r,
SPL_pINT  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 814 del archivo xfft4.c.

SPL_VOID XAPI fband_fband_i16 ( pFBAND  r,
pINT16  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 835 del archivo xfft4.c.

SPL_VOID XAPI fband_fband_i32 ( pFBAND  r,
pINT32  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 857 del archivo xfft4.c.

SPL_VOID XAPI fband_fband_u32 ( pFBAND  r,
pUINT32  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 878 del archivo xfft4.c.

SPL_VOID XAPI fband_fband_f32 ( pFBAND  r,
pFLOAT32  invec 
)

Parámetros:
r Puntero a la estructura _FBAND
invec Vector que contiene la secuencia de valores enteros. Debe tener rfft_getnp() puntos.
Devuelve:
-

Definición en la línea 899 del archivo xfft4.c.


Generado el Thu Mar 11 18:59:27 2010 para AhoLib por  doxygen 1.5.6