Home | Develop | Download | Contact
Funciones
Funciones útiles de la biblioteca.

Funciones útiles de la biblioteca. Más...

Funciones

int pds_vector_lowpass_butterworth (PdsVector *hnum, PdsVector *hden, PdsDfReal Wn)
 Encuentra el numerador y denominador de un filtro Butterworth pasa bajo. Ambos vectores de entrada tienen la misma longitud Nel y Nel-1 es el orden N del filtro Butterworth. Más...
 
PdsVector * pds_vector_new_butterworth_hnum (PdsDfNatural Order, PdsDfReal Wn)
 Encuentra el numerador de un filtro Butterworth pasa bajo de orden Order. Más...
 
PdsVector * pds_vector_new_butterworth_hden (PdsDfNatural Order, PdsDfReal Wn)
 Encuentra el denominador de un filtro Butterworth pasa bajo de orden Order. Más...
 
int pds_vector_iir_frequency_response (const PdsVector *hnum, const PdsVector *hden, PdsVector *H)
 Encuentra el módulo de la respuesta en frecuencia, normalizada de 0 a pi del filtro digital conformado por el numerador hnum y denominador hden. Más...
 
int pds_vector_lowpass_rectangular (PdsVector *h, PdsDfReal Wn)
 Encuentra los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana rectangular. Más...
 
PdsVector * pds_vector_new_lowpass_rectangular (PdsDfNatural N, PdsDfReal Wn)
 Devuelve un vector con los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana rectangular. Más...
 
int pds_vector_lowpass_hamming (PdsVector *h, PdsDfReal Wn)
 Encuentra los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana de Hamming. Más...
 
PdsVector * pds_vector_new_lowpass_hamming (PdsDfNatural N, PdsDfReal Wn)
 Devuelve un vector con los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana de Hamming. Más...
 
int pds_vector_lowpass_hanning (PdsVector *h, PdsDfReal Wn)
 Encuentra los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana de Hanning. Más...
 
PdsVector * pds_vector_new_lowpass_hanning (PdsDfNatural N, PdsDfReal Wn)
 Devuelve un vector con los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana de Hanning. Más...
 
int pds_vector_fir_frequency_response (const PdsVector *h, PdsVector *H)
 Encuentra el módulo de la respuesta en frecuencia, normalizada de 0 a pi del filtro digital conformado por el numerador h. Más...
 
int pds_vector_lowpass_to_highpass (PdsVector *H)
 Carga un vector con $H(-Z)$. Tranforma un filtro pasa bajo con un corte en Wc a un filtro pasa alto con un corte en PI-Wc. Más...
 
PdsVector * pds_vector_new_lowpass_to_highpass (const PdsVector *H)
 Retorna un vector con $H(-Z)$. Tranforma un filtro pasa bajo con una frecuencia de corte en Wc a un filtro pasa alto con un corte en PI-Wc. Más...
 
PdsVector * pds_vector_new_lowpass_to_bandpass (const PdsVector *H)
 Retorna un vector con $H(-Z^2)$. Crea a partir de un filtro pasa bajoo con un corte en Wc un filtro pasa banda centrado en (PI/2) con ancho de banda Wc. Más...
 
PdsVector * pds_vector_new_lowpass_to_bandreject (const PdsVector *H)
 Retorna un vector con $H(Z^2)$. Crea a partir de un filtro pasa bajo con un corte en Wc un filtro rechaza banda centrado en (PI/2) con ancho de rechaza banda PI-Wc. Más...
 

Descripción detallada

Funciones útiles de la biblioteca.

Documentación de las funciones

int pds_vector_lowpass_butterworth ( PdsVector *  hnum,
PdsVector *  hden,
PdsDfReal  Wn 
)

Encuentra el numerador y denominador de un filtro Butterworth pasa bajo. Ambos vectores de entrada tienen la misma longitud Nel y Nel-1 es el orden N del filtro Butterworth.

\[ \left|H(j\Omega )\right|={1 \over {\sqrt {1+(\Omega /\Omega_{c})^{2N}}}}, ~~\forall~ \Omega=2 \pi f, ~ \Omega_{c}=2 \pi f_{c} \]

\[ H(j\Omega )H(-j\Omega ) =\left|H(j\Omega )\right|^2\]

Teoría
Usa una transformación bi-linear

\[ \Omega \leftarrow -j~ \frac{2}{T_d}~{\frac{z-1}{z+1}} \equiv \frac{2}{T_d}~tan(\frac{w}{2}) \]

Con una frecuencia de corte igual a $ \Omega_c \leftarrow \frac{2}{T_d}~tan(\frac{W_n \pi}{2}) $ Por comodidad es escogido $ T_d \equiv 2~tan(\frac{W_n \pi}{2})$

\[ \left( \frac{\Omega}{\Omega_{c}}\right)^{2n} \leftarrow (-1)^n \left(\frac{2}{T_d}\right)^{2n} \left(\frac{z-1}{z+1}\right)^{2n} \]

Parámetros
[out]hnumCoeficientes del numerador del filtro digital.
[out]hdenCoeficientes del denominador del filtro digital.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital.
Devuelve
TRUE si todo fue bien o FALSE si no. (ej. hnum==NULL, hden==NULL, Wn<0 o Wn>1)
Ejemplos:
testprog8.c.
PdsVector * pds_vector_new_butterworth_hnum ( PdsDfNatural  Order,
PdsDfReal  Wn 
)

Encuentra el numerador de un filtro Butterworth pasa bajo de orden Order.

\[ \left|H(j\Omega )\right|={1 \over {\sqrt {1+(\Omega /\Omega_{c})^{2N}}}}, ~~\forall~ \Omega=2 \pi f, ~ \Omega_{c}=2 \pi f_{c} \]

\[ H(j\Omega )H(-j\Omega ) =\left|H(j\Omega )\right|^2\]

Teoría
Usa una transformación bi-linear

\[ \Omega \leftarrow -j~ \frac{2}{T_d}~{\frac{z-1}{z+1}} \equiv \frac{2}{T_d}~tan(\frac{w}{2}) \]

Con una frecuencia de corte igual a $ \Omega_c \leftarrow \frac{2}{T_d}~tan(\frac{W_n \pi}{2}) $ Por comodidad es escogido $ T_d \equiv 2~tan(\frac{W_n \pi}{2})$

\[ \left( \frac{\Omega}{\Omega_{c}}\right)^{2n} \leftarrow (-1)^n \left(\frac{2}{T_d}\right)^{2n} \left(\frac{z-1}{z+1}\right)^{2n} \]

Parámetros
[in]OrderOrden del filtro Butterworth.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital.
Devuelve
Un puntero a un vector numerador o NULL en caso de error. (ej. Order==0 Wn>1 o Wn<0)
PdsVector * pds_vector_new_butterworth_hden ( PdsDfNatural  Order,
PdsDfReal  Wn 
)

Encuentra el denominador de un filtro Butterworth pasa bajo de orden Order.

\[ \left|H(j\Omega )\right|={1 \over {\sqrt {1+(\Omega /\Omega_{c})^{2N}}}}, ~~\forall~ \Omega=2 \pi f, ~ \Omega_{c}=2 \pi f_{c} \]

\[ H(j\Omega )H(-j\Omega ) =\left|H(j\Omega )\right|^2\]

Teoría
Usa una transformación bi-linear

\[ \Omega \leftarrow -j~ \frac{2}{T_d}~{\frac{z-1}{z+1}} \equiv \frac{2}{T_d}~tan(\frac{w}{2}) \]

Con una frecuencia de corte igual a $ \Omega_c \leftarrow \frac{2}{T_d}~tan(\frac{W_n \pi}{2}) $ Por comodidad es escogido $ T_d \equiv 2~tan(\frac{W_n \pi}{2})$

\[ \left( \frac{\Omega}{\Omega_{c}}\right)^{2n} \leftarrow (-1)^n \left(\frac{2}{T_d}\right)^{2n} \left(\frac{z-1}{z+1}\right)^{2n} \]

Parámetros
[in]OrderOrden del filtro Butterworth.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital.
Devuelve
Un puntero a un vector numerador o NULL en caso de error. (ej. N==0 Wn>1 o Wn<0)
int pds_vector_iir_frequency_response ( const PdsVector *  hnum,
const PdsVector *  hden,
PdsVector *  H 
)

Encuentra el módulo de la respuesta en frecuencia, normalizada de 0 a pi del filtro digital conformado por el numerador hnum y denominador hden.

El numero de puntos analizados en la respuesta en frecuencia, es el número de elementos del vector H. Los datos de H serán sobrescritos.

Teoría

\[ H(w)=\left| \frac{hnum(Z=e^{j w})}{hden(Z=e^{j w})}\right| , ~\forall ~ 0 \leq w \leq \pi \]

\[ \Omega \leftarrow -j~ \frac{2}{T_d}~{\frac{z-1}{z+1}} \equiv \frac{2}{T_d}~tan(\frac{w}{2}) \]

Parámetros
[in]hnumCoeficientes del numerador del filtro digital.
[in]hdenCoeficientes del denominador del filtro digital.
[out]HDonde se guardará el módulo cuadrado de la respuesta en frecuencia del filtro digital.
Devuelve
TRUE si todo fue bien o FALSE si no. (ej. hnum==NULL, hden==NULL o H==NULL)
Ejemplos:
testprog8.c.
int pds_vector_lowpass_rectangular ( PdsVector *  h,
PdsDfReal  Wn 
)

Encuentra los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana rectangular.

Teoría:

\[ h(n)=\frac{sin(W_n \pi (n-\frac{Order}{2}))}{\pi (n-\frac{Order}{2})}, ~\forall~n \in Z^+, 0 \leq n \leq Order \]

Parámetros
[out]hDonde se guardarán los coeficientes del filtro digital.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital. Wn indica una frecuencia de corte a Wn*Fs/2, donde Fs es la frecuencia de muestreo.
Devuelve
TRUE si todo fue bien o FALSE si no. (ej. h==NULL, Wn<0 o Wn>1)
PdsVector * pds_vector_new_lowpass_rectangular ( PdsDfNatural  N,
PdsDfReal  Wn 
)

Devuelve un vector con los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana rectangular.

Teoría:

\[ h(n)=\frac{sin(W_n \pi (n-\frac{Order}{2}))}{\pi (n-\frac{Order}{2})}, ~\forall~n \in Z^+, 0 \leq n \leq Order \]

Parámetros
[in]NOrden del filtro FIR.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital. Wn indica una frecuencia de corte a Wn*Fs/2, donde Fs es la frecuencia de muestreo.
Devuelve
Un puntero a un vector de coeficientes de filtro FIR o NULL en caso de error. (ej. N==0 Wn>1 o Wn<0)
Ejemplos:
testprog8.c.
int pds_vector_lowpass_hamming ( PdsVector *  h,
PdsDfReal  Wn 
)

Encuentra los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana de Hamming.

Teoría:

\[ h(n)=\frac{sin(W_n \pi (n-\frac{Order}{2}))}{\pi (n-\frac{Order}{2})}hamming(n), ~\forall~n \in Z^+, 0 \leq n \leq Order \]

Parámetros
[out]hDonde se guardarán los coeficientes del filtro digital.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital. Wn indica una frecuencia de corte a Wn*Fs/2, donde Fs es la frecuencia de muestreo.
Devuelve
TRUE si todo fue bien o FALSE si no. (ej. h==NULL, Wn<0 o Wn>1)
PdsVector * pds_vector_new_lowpass_hamming ( PdsDfNatural  N,
PdsDfReal  Wn 
)

Devuelve un vector con los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana de Hamming.

Teoría:

\[ h(n)=\frac{sin(W_n \pi (n-\frac{Order}{2}))}{\pi (n-\frac{Order}{2})}hamming(n), ~\forall~n \in Z^+, 0 \leq n \leq Order \]

Parámetros
[in]NOrden del filtro FIR.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital. Wn indica una frecuencia de corte a Wn*Fs/2, donde Fs es la frecuencia de muestreo.
Devuelve
Un puntero a un vector de coeficientes de filtro FIR o NULL en caso de error. (ej. N==0 Wn>1 o Wn<0)
Ejemplos:
testprog8.c.
int pds_vector_lowpass_hanning ( PdsVector *  h,
PdsDfReal  Wn 
)

Encuentra los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana de Hanning.

Teoría:

\[ h(n)=\frac{sin(W_n \pi (n-\frac{Order}{2}))}{\pi (n-\frac{Order}{2})}hanning(n), ~\forall~n \in Z^+, 0 \leq n \leq Order \]

Parámetros
[out]hDonde se guardarán los coeficientes del filtro digital.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital. Wn indica una frecuencia de corte a Wn*Fs/2, donde Fs es la frecuencia de muestreo.
Devuelve
TRUE si todo fue bien o FALSE si no. (ej. h==NULL, Wn<0 o Wn>1)
PdsVector * pds_vector_new_lowpass_hanning ( PdsDfNatural  N,
PdsDfReal  Wn 
)

Devuelve un vector con los coeficientes de un filtro FIR pasa bajo. Usando el método de la ventana, con ventana de Hanning.

Teoría:

\[ h(n)=\frac{sin(W_n \pi (n-\frac{Order}{2}))}{\pi (n-\frac{Order}{2})}hanning(n), ~\forall~n \in Z^+, 0 \leq n \leq Order \]

Parámetros
[in]NOrden del filtro FIR.
[in]WnNúmero entre 0 y 1.0 que indica la proporción de PI, para la frecuencia de corte del filtro digital. Wn indica una frecuencia de corte a Wn*Fs/2, donde Fs es la frecuencia de muestreo.
Devuelve
Un puntero a un vector de coeficientes de filtro FIR o NULL en caso de error. (ej. N==0 Wn>1 o Wn<0)
Ejemplos:
testprog8.c.
int pds_vector_fir_frequency_response ( const PdsVector *  h,
PdsVector *  H 
)

Encuentra el módulo de la respuesta en frecuencia, normalizada de 0 a pi del filtro digital conformado por el numerador h.

Teoría

\[ H(w)=\left|h(Z=e^{j w})\right|, ~\forall ~ 0 \leq w \leq \pi \]

Parámetros
[in]hCoeficientes del filtro digital.
[out]HDonde se guardará el módulo cuadrado de la respuesta en frecuencia del filtro digital.
Devuelve
TRUE si todo fue bien o FALSE si no. (ej. h==NULL o H==NULL)
Ejemplos:
testprog2.c y testprog8.c.
int pds_vector_lowpass_to_highpass ( PdsVector *  H)

Carga un vector con $H(-Z)$. Tranforma un filtro pasa bajo con un corte en Wc a un filtro pasa alto con un corte en PI-Wc.

En realidad lo que hace es un corrimiento de PI de la respuesta en frecuencia. Que es equivalente a cambiar el valor de Z por -Z.

Parámetros
[in,out]HDonde se encuentra el filtro pasa bajo y donde se guardará el filtro pasa alto.
Devuelve
TRUE si todo fue bien o FALSE si no. (ej. H==NULL)
Ejemplos:
testprog8.c.
PdsVector * pds_vector_new_lowpass_to_highpass ( const PdsVector *  H)

Retorna un vector con $H(-Z)$. Tranforma un filtro pasa bajo con una frecuencia de corte en Wc a un filtro pasa alto con un corte en PI-Wc.

En realidad lo que hace es un corrimiento de PI de la respuesta en frecuencia. Que es equivalente a cambiar el valor de Z por -Z.

Parámetros
[in]HDonde se encuentra el filtro pasa bajo y donde se guardará el filtro pasa alto.
Devuelve
Si todo fue bien retorna un puntero a un vector con el filtro pasa alto, o NULL si no. (ej. H==NULL)
PdsVector * pds_vector_new_lowpass_to_bandpass ( const PdsVector *  H)

Retorna un vector con $H(-Z^2)$. Crea a partir de un filtro pasa bajoo con un corte en Wc un filtro pasa banda centrado en (PI/2) con ancho de banda Wc.

En realidad lo que hace es comprimir toda respuesta en frecuencia de [-PI,PI] a [-PI/2,PI/2] y dislocarla a PI/2 y -PI/2. Que es equivalente a cambiar el valor de Z por -Z^2. Conociendo que Nel es el numero de elementos de H, entonces el vector entregado tendrá 2N-1 elementos.

Parámetros
[in]HDonde se encuentra el filtro pasa bajo.
Devuelve
Si todo fue bien retorna un puntero a un vector con el filtro pasa banda, o NULL si no. (ej. H==NULL)
Ejemplos:
testprog8.c.
PdsVector * pds_vector_new_lowpass_to_bandreject ( const PdsVector *  H)

Retorna un vector con $H(Z^2)$. Crea a partir de un filtro pasa bajo con un corte en Wc un filtro rechaza banda centrado en (PI/2) con ancho de rechaza banda PI-Wc.

En realidad lo que hace es comprimir toda respuesta en frecuencia de [-PI,PI] a [-PI/2,PI/2] y dislocarla a 0, PI y -PI. Que es equivalente a cambiar el valor de Z por Z^2. Conociendo que Nel es el número de elementos de H, entonces el vector entregado tendrá 2N-1 elementos.

Parámetros
[in]HDonde se encuentra el filtro pasa bajo.
Devuelve
Si todo fue bien retorna un puntero a un vector con el filtro rechaza banda, o NULL si no. (ej. H==NULL)
Ejemplos:
testprog8.c.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed