Explicar esta notación DSP

votos
3

Estoy tratando de poner en práctica este extenstion del algoritmo de cuerda pulsada Karplus-Strong, pero no entiendo la notación no utilizado. Quizá haya que esperar años de estudio, pero tal vez no - tal vez usted me puede decir.

Creo que las ecuaciones de abajo están en el dominio de la frecuencia o algo así. Sólo a partir de la primera ecuación, H p (z), el filtro de paso bajo dirección de captación. Para una dirección que utiliza p = 0, por la otra, tal vez 0.9. Esto se reduce a a 1 en el primer caso, o 0,1 / Resultados (1 - 0.9 z -1 ) en el segundo.

texto alternativo http://www.dsprelated.com/josimages/pasp/img902.png

Ahora, siento que esto podría significar, en términos de codificación, algo hacia:

H_p(float* input, int time) {
  if (downpick) {
    return input[time];
  } else {
    return some_function_of(input[t], input[t-1]);
  }
}

Alguien me puede dar una pista? O se trata de inútil y realmente necesito todos los antecedentes DSP para implementar esto? Yo era un matemático vez ... pero esto no es mi dominio.

Publicado el 17/12/2009 a las 01:34
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
7

Así que el z -1 sólo significa un retraso de un unidad.

Tomemos H p = (1-p) / (1-pz -1 ).

Si seguimos la convención de "x" para la entrada y "y" para la salida, la función de transferencia H = y / x (= salida / entrada)

por lo que obtener y / x = (1-p) / (1-pz -1 )

o (1-p) x = (1-pz -1 ) y

(1-p) x [n] = y [n] - py [n-1]

o: y [n] = py [n-1] + (1-p) x [n]

En el código C este puede ser implementado

y += (1-p)*(x-y);

sin ningún estado adicional más allá de usar la salida "y" como una variable de estado en sí. O bien, puede ir para el enfoque más literal:

y_delayed_1 = y;
y = p*y_delayed_1 + (1-p)*x;

En cuanto a las otras ecuaciones van, que son todas las ecuaciones típicas excepción de que segunda ecuación que se parece a tal vez es una manera de seleccionar ya sea H Β = 1-z -1 o 1-z -2 . (¿Qué es N?)

Los filtros son una especie de vaga y que van a ser más difícil para usted para hacer frente a no ser que se pueden encontrar algunos filtros pre-empaquetados. En general son de la forma

H = H0 * (1 + az -1 + bz -2 + cz -3 ...) / (1 + rz -1 + sz -2 + tz -3 ...)

y todo lo que hacen es escribir H = y / x, cruce se multiplican para obtener

H0 * (1 + az -1 + bz -2 + cz -3 ...) * x = (1 + rz -1 + sz -2 + tz -3 ...) * y

y luego aislar "y" por sí mismo, haciendo que la salida de una función lineal de diversos retrasos de sí mismo y de la entrada "y".

Pero el diseño de filtros (recogiendo el a, b, c, etc.) Es más dura que su aplicación, en su mayor parte.

Respondida el 17/12/2009 a las 01:48
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more