5 votos

Respuesta de frecuencia simple de paso bajo

Bien, así que espero que esto no sea demasiado duro o off-topic. Digamos que tengo una muy simple filtro de paso bajo (algo que suaviza una señal), y el objeto de filtro tiene una posición variable y una frecuencia de corte variable (entre 0 y 1). En cada paso, un valor que se pone en el siguiente pseudocódigo como "entrada": position = position*(1-c)+input*c, o más, matemáticamente, f(n) = f(n-1)*(1-c)+x[n]*c. La salida es el valor de "posición". Básicamente, se mueve un porcentaje de la distancia entre la posición actual y, a continuación, valor de entrada, almacena este valor internamente, y la devuelve como salida. Es intencionalmente simplista, ya que el proyecto en el que estoy usando para este va a tener demasiados de estos en la secuencia de procesamiento de audio en tiempo real.

Dado el diseño del filtro, ¿cómo puedo construir una función que toma de la frecuencia de entrada (donde 1 significa una onda sinusoidal con una longitud de onda de 2 muestras, y .5 significa una onda sinusoidal con la longitud de onda de 4 muestras, y 0 es una línea plana), y el valor de corte (entre el 1 y el 0, como se muestra arriba) y salidas de la amplitud de la resultante de la onda sinusoidal? Onda sinusoidal viene en onda sinusoidal sale, yo sólo quiero ser capaz de averiguar cómo mucho más tranquilo que en cualquier entrada y la frecuencia de corte combinación.

3voto

Jason Sparks Puntos 948

No tengo suficiente mojo a comentar sobre Greg respuesta.

  1. Greg hizo un tonto error de cálculo: La función de transferencia de $A(\omega)$ debe $c/(1-(1-c)e^{-i\omega})$.

  2. Lo que quiero es que el módulo de $A(\omega)$. Tenga en cuenta que $\sin \omega n$ es, precisamente, la parte imaginaria de $e^{i\omega n}$. Debido a que la relación entre la entrada y la salida es lineal, la respuesta a la $\sin\omega n$ será la parte imaginaria de $A(\omega)e^{i\omega n}$. Que va a ser una sinusoide con algunos de desplazamiento y de la amplitud de la $|A(\omega)|$. Aquí está una parcela para la $c=1/2$.

  3. Para leer más acerca de este tipo de cosas, google "filtro IIR" o "infinite impulse response".

2voto

Nathan Bedford Puntos 3157

Como yo lo entiendo, se le da una secuencia $(x_n)_{n\in\mathbb{N}}$ de los valores de entrada a partir de la cual calcular una secuencia $f_n$ que está dada por las siguientes relaciones de recurrencia:

$f_0 = 0$

$f_{n+1} = (1-c)f_n + c\cdot x_{n+1}$

Su pregunta es: dada una onda sinusoidal $x_n=\sin(\omega n)$, afirman que $f_n$ es también una onda sinusoidal y quieres saber su amplitud, en dependencia de la frecuencia de $\omega$.

Respuesta: Es más fácil calcular la respuesta en frecuencia con funciones exponenciales en lugar de ondas sinusoidales.

$f_n = Ae^{i\omega n}$

$x_n = e^{i\omega n}$

Desde $f_{n+1} = e^{i\omega (n+1)} = e^{i\omega} e^{i\omega n} = e^{i\omega} f_n$, la recurrencia de la relación da

$e^{i\omega} A e^{i\omega n} = (1-c)Ae^{i\omega n} + c e^{i\omega} e^{i\omega n}$

lo que implica

$A(\omega) = \frac{c}{1 - (1-c)e^{-i\omega}}$

Para calcular la respuesta de ondas sinusoidales, se puede representar la función seno como una combinación lineal de dos funciones exponenciales

$x_n = \sin(\omega n) = \frac1{2i}(e^{i\omega n}-e^{-i\omega n})$

y obtener

$f_n = \frac1{2i}(A(\omega)e^{i\omega n}-\bar A(\omega)e^{-i\omega n}) = |A(\omega)| \sin(\omega n + \phi)$ donde $A(\omega) =: |A(\omega)| e^{i\phi}$.

En otras palabras, el complejo de frecuencia de respuesta $A(\omega)$ codifica tanto el cambio en la amplitud y la fase de cambio. Voy a dejar el cálculo exacto de $|A(\omega)|$ a usted, así que usted puede familiarizarse con este método de cálculo.

Sin funciones exponenciales, usted tendría que usar la suma y la resta teoremas de seno y coseno. Dicho de otra manera, las funciones exponenciales proporcionar una muy conveniente la formulación de las identidades trigonométricas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X