No hay un tema matematicas en el foro asi que lo puse aca pero si consideran que va en otro lado por favor moverlo.
Estoy terminando el soft de mi osciloscopio digital y me encuentro con un problema donde no tengo la suficiente matematica en mi cabeza para resolverlo, por lo tanto acudo aqui por si alguien puede darme una mano con esto.
Resulta que tengo un tiempo minimo entre muestras de 25ns y quiero, solo matematicamente, llevar el osciloscopio a valores inferiores de escala de tiempo. Aclaro esto para evitar caer en soluciones electronicas como el sampleo de señales periodicas con retraso de trigger (oversampling creo que es el termino correcto).
Entonces, si tengo los puntos Y de una señal senoidal para X = 1, X = 2, X = n... necesito fabricar con una funcion matematica los puntos X = 1.5, X = 2.5, etc.etc (haciendo el osciloscopio el doble de rapido matematicamente, luego el triple y asi sucesivamente hasta que sea razonable y no tenga una distorsion inaceptable de la señal real)
Estuve viendo los siguientes articulos de wikipedia:
http://en.wikipedia.org/wiki/Trigonometric_interpolation
http://en.wikipedia.org/wiki/Trigonometric_polynomial
http://en.wikipedia.org/wiki/Discrete_Fourier_transform
y otros, pero lamentablemente mi nivel matematico es demasiado bajo para entender estos articulos.
Encontre de pura suerte esto: http://www.arachnoid.com/polysolve/ que es una pagina con un codigo javascript para generar el polinomio de unos puntos de sample dados y que permite calcular cualquier punto necesario Y en el tiempo X. Aparentemente funciona bien segun unas pruebas que hice con unas muestras pero creo que esta resolucion es mas bien lineal, no senoidal.
Tambien vi que osciloscopios digitales comerciales tienen una opcion (por defecto activada) de interpolacion sen(x) / x . Busque acerca de esto pero no pude o no supe encontrar la informacion de como se aplica (no veo variable Y en esa ecuacion)
¿Alguien sabria orientarme como puedo hacer esta interpolacion? ¿Como podria aplicarla? Soy de profesion programador asi que eso no es problema, solo me falta la matematica para hacer la funcion!!
Desde ya, muchas gracias por leer esto
Estoy terminando el soft de mi osciloscopio digital y me encuentro con un problema donde no tengo la suficiente matematica en mi cabeza para resolverlo, por lo tanto acudo aqui por si alguien puede darme una mano con esto.
Resulta que tengo un tiempo minimo entre muestras de 25ns y quiero, solo matematicamente, llevar el osciloscopio a valores inferiores de escala de tiempo. Aclaro esto para evitar caer en soluciones electronicas como el sampleo de señales periodicas con retraso de trigger (oversampling creo que es el termino correcto).
Entonces, si tengo los puntos Y de una señal senoidal para X = 1, X = 2, X = n... necesito fabricar con una funcion matematica los puntos X = 1.5, X = 2.5, etc.etc (haciendo el osciloscopio el doble de rapido matematicamente, luego el triple y asi sucesivamente hasta que sea razonable y no tenga una distorsion inaceptable de la señal real)
Estuve viendo los siguientes articulos de wikipedia:
http://en.wikipedia.org/wiki/Trigonometric_interpolation
http://en.wikipedia.org/wiki/Trigonometric_polynomial
http://en.wikipedia.org/wiki/Discrete_Fourier_transform
y otros, pero lamentablemente mi nivel matematico es demasiado bajo para entender estos articulos.
Encontre de pura suerte esto: http://www.arachnoid.com/polysolve/ que es una pagina con un codigo javascript para generar el polinomio de unos puntos de sample dados y que permite calcular cualquier punto necesario Y en el tiempo X. Aparentemente funciona bien segun unas pruebas que hice con unas muestras pero creo que esta resolucion es mas bien lineal, no senoidal.
Tambien vi que osciloscopios digitales comerciales tienen una opcion (por defecto activada) de interpolacion sen(x) / x . Busque acerca de esto pero no pude o no supe encontrar la informacion de como se aplica (no veo variable Y en esa ecuacion)
¿Alguien sabria orientarme como puedo hacer esta interpolacion? ¿Como podria aplicarla? Soy de profesion programador asi que eso no es problema, solo me falta la matematica para hacer la funcion!!
Desde ya, muchas gracias por leer esto