Electrónica y Programación en Personal
«Si no se soluciona con un script en Python entonces no es viable»

por Yeison Cardona el 24 de febrero del 2013 a las 9:46 pm UTC
IPython nos provee de una avanzada consola interactiva de Python, entre muchas ventajas una de ellas es el modo PyLab, que nos precarga módulos de Matplotlib, SciPy y NumPy.

Dependencias

Podemos instalar algunos módulos bien interesantes para cálculo científico con Python, estas simples herramientas pueden reemplazar Matlab, son realmente potentes, si se está interesado en algunos tutoriales acerca de éste tema, puede consular este magnifico blog en español.
sudo apt-get install numpy
sudo apt-get install scipy
sudo apt-get install matplotlib
sudo apt-get install ipython

Iniciando IPython con PyLab

Primero tenemos que lanzar IPython en modo PyLab, de esta manera:
ipython --pylab
y veremos algo como:
Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.1.rc2 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

Welcome to pylab, a matplotlib-based Python environment [backend: TkAgg].
For more information, type 'help(pylab)'.

In [1]: 

Código

Ahora ya podemos comenzar con con nuestra actividad, por ahora convolución, de pronto algunos otros ejemplos sencillos mas adelante.

Primero debemos crear un par de listas (o un array de NumPy) con la serie de datos discretos que queremos convolucionar, primero realicemos una convolución de un resultado conocido, convolucionemos dos señales escalón acotadas:

Creamos las señales:
In [1]: f = [5] * 20
In [2]: g = [7] * 24
In [3]: 
Generamos y guardamos la convolución entre ambas:
In [3]: conv = convolve(f, g)
In [4]: 
Ahora simplemente graficamos el resultado:
In [4]: plot(conv)

Podemos hacer algunos ajustes:
In [5]: axis([0, 45, 0, 750]);
In [6]: grid()
In [7]: 

Convolución entre sin(x) y sinc(x)

In [1]: x = arange(0, 10, 0.1)
In [2]: f = map(lambda x:sin(x), x)
In [3]: g = map(lambda x:sinc(x), x)
In [4]: conv = convolve(f, g)
In [5]: subplot(221);
In [6]: plot(x, f, "b", label="sin(x)");
In [7]: grid()
In [8]: legend();
In [9]: subplot(222);
In [10]: plot(x, g, "g", label="sinc(x)");
In [11]: grid()
In [12]: legend();
In [13]: subplot(212);
In [14]: plot(conv, "r", label="sin(x)*sinc(x)");
In [15]: grid()
In [16]: legend();
In [17]: 


También podría interesarte:

Añadir un comentario:
Si desean una respuesta para su comentario sólo deben agregarme en G+ y hacer una mención a Yeison Cardona, así les podré responder lo antes posible.