Pybonacci / scipy

Scipy main repository
http://scipy.org/
Other
1 stars 0 forks source link

Equiparar los sistemas discretos LTI a los sistemas contínuos LTI #1

Open zerberros opened 9 years ago

zerberros commented 9 years ago

Habria que crear una clase dlti en el archivo signal/dltisys.py similar a la clase lti que está dentro del archivo signal/ltisys.py con el objetivo de poder acceder a los métodos de la clase dlti desde la propia clase, lo que redundará en un código más legible.

Ejemplo de código:


# Importamos las bibliotecas necesarias...
from scipy import signal
import numpy as np

#Creamos una funcion de transferencia arbitraria y la pasamos a discreta
T=0.05
G_s=signal.lti([60],[1,2.5])
G_z=signal.cont2discrete([G_s.num, G_s.den],T)

#Comprobamos los tipos de datos
type(G_z)
# Nos devuelve una tuple
type(G_s)
# Nos devuelve scipy.signal.ltisys.lti
astrojuanlu commented 9 years ago

¡Buena idea! De hecho, viendo el código que acabas de poner hay algo más que se podría hacer: que la función signal.cont2discrete acepte también objetos lti.

Si te fijas en estas líneas, la función comprueba la longitud de la tupla para ver qué clase de conversión tiene que hacer:

https://github.com/Pybonacci/scipy/blob/master/scipy/signal/cont2discrete.py#L77

Si le pasas un objeto lti, podría obtener cualquiera de sus propiedades y hacer la conversión. No sé nada sobre sistemas discretos, así que tendrías que elegir qué método es el que está mejor condicionado, es más estable o conserva mejor la información :) ¿Qué te parece la idea?

astrojuanlu commented 9 years ago

Acabo de actualizar el repositorio a la última versión. Te recomiendo que empieces una nueva rama con un nombre identificativo (por ejemplo: dltisys-enhancement, o lti-conversion) y que empieces a hacer tus commits ahí. ¡Luego puedes abrir un pull request contra este repositorio y empezamos a discutirlo! :smiley:

zerberros commented 9 years ago

@Juanlu001 Ya he hecho un pequeño commit inicial, sin mucho valor. Para hacer un pull-request creo que tú también tendrias que crear una rama de desarrollo. La mia la he llamado dltisys-enhancement. Si no, tendria que hacer el pull-requiest contra tu rama master.

¡Buena idea! De hecho, viendo el código que acabas de poner hay algo más que se podría hacer: que la función signal.cont2discrete acepte también objetos lti.

Perfecto :+1:

astrojuanlu commented 9 years ago

¡Genial! Abre el pull request directamente contra mi rama master, no lo vamos a fusionar o sea que aquí podemos hacer experimentos :) Cuando lo hagas te comento un par de cosas ahí.

astrojuanlu commented 9 years ago

Ya están trabajando en sistemas discretos: https://github.com/scipy/scipy/pull/4881