online - python programming in matlab
reemplazando Matlab con python (8)
Soy un estudiante de ingeniería y tengo que hacer muchos procesos numéricos, gráficos, simulaciones, etc. La herramienta que utilizo actualmente es Matlab. Lo uso en las computadoras de mi universidad para la mayoría de mis tareas. Sin embargo, quiero saber cuáles son las opciones gratuitas disponibles.
He investigado un poco y muchos han dicho que Python es un sustituto digno de Matlab en varios escenarios. Quiero saber cómo hacer todo esto con Python. Estoy usando un mac. Entonces, ¿cómo instalo los diferentes paquetes de Python? ¿Qué son esos paquetes? ¿Es realmente una alternativa viable? ¿Cuáles son las cosas que puedo y no puedo hacer usando esta configuración de python?
Duplicado de this .
Mi opinión es que para cálculos y visualización de álgebra numérica / lineal pura, Matlab es un entorno de desarrollo ligeramente más consistente. Numpy / Scipy / Matplotlib siento, para mí, un poco al azar. Si está creando un programa completo, para automatizar un sistema o mostrar los resultados en una página web, Python tiene la ventaja de ser un lenguaje de programación real, ante todo. Pero para el procesamiento numérico interactivo creo que Matlab aún gana. La falta de operadores infijos de elementos en Python es un pequeño ejemplo ( PEP 225 ). Para la computación estadística, la exploración y visualización de datos, es difícil superar a R.
En una Mac, las formas más fáciles de comenzar son (sin ningún orden en particular):
- Enthought Python Distribution, que incluye la mayoría de los paquetes científicos que es probable que necesite. Gratis para uso académico / no comercial.
- Macports : actualizado con las últimas versiones, por lo que el
sudo port install py26-numpy py26-scipy py26-matplotlib py26-ipython
para que pueda comenzar. - Scipy Superpack - script para instalar versiones svn recientes de todos los paquetes importantes.
He hecho exactamente esto (reemplazar Matlab con Python) hace aproximadamente 2 años y no he mirado atrás. La transmisión en Python, el modelo de memoria más intuitivo y otras ventajas de Numpy hacen que el trabajo numérico sea un completo placer. Además, con f2py, cython es increíblemente fácil poner bucles internos en otro idioma. This es un buen lugar para comenzar: otras páginas impresionantes para motivar son PerformancePython y ParallelProgramming . Asegúrate de entender que la variable Pythons "es una referencia a la semántica de un objeto ... después de ese ajuste, todo es simple. Una de las cosas más geniales que supera a matlab es en 2 líneas, corro sobre 8 núcleos ... p = Pool(8); res = p.map(analysis_function,list_of_data)
p = Pool(8); res = p.map(analysis_function,list_of_data)
- Las cajas de herramientas paralelas de MATLAB son tan caras que aún no he visto una universidad que las tenga.
Hay tres aspectos a considerar al reemplazar Matlab con Python; Las capacidades básicas del lenguaje, el IDE y el precio.
Comparación de capacidades
Esta sección describe todas las capacidades de cada plataforma. En resumen, todo lo que Matlab puede hacer, Python también puede hacer mucho más. Sin embargo, cosas como el álgebra lineal y la creación rápida de prototipos de Matlab son más limpias.
Matlab
Todo en Matlab está listo y las cajas de herramientas están perfectamente integradas. También es mucho más maduro, pero no fue diseñado para programación de propósito general, lo que significa que cualquier cosa que no esté relacionada con el álgebra lineal es dolorosa de implementar.
- Cajas de herramientas: Las cajas de herramientas de Matlab son muy buenas y las implementaciones de Python a menudo tienen dificultades para competir con ellas (incluso para cosas no tan especializadas como los algoritmos de optimización).
- Álgebra lineal: Matlab tiene capacidades de álgebra lineal concisa que son más fáciles de leer e interpretar.
- Capacidades de visualización: tiene una muy buena y muy amplia gama de capacidades de visualización.
Pitón
Python requerirá una serie de módulos adicionales para que se convierta en un buen Matlabreplacement.
- Programación de propósito general: Python es un lenguaje de programación adecuado que ofrece mucha más flexibilidad sobre Matlab.
- Numpy: Proporciona matrices y rutinas de álgebra lineal, sin embargo, tiene una sintaxis más complicada que Matlab. Me he enamorado de la función de broadcasting sin embargo, no más basura
repmat
. - Ciencia y Ciencia: Estadísticas, optimización y otras cosas matemáticas útiles.
- MatPlotLib: proporciona, en mi opinión, parcelas de mayor calidad que Matlab. Además, está diseñado para ser sintácticamente similar a Matlab, por lo que debería ser fácil de recoger.
- SymPy: Buen paquete de programación simbólica.
Comparación de IDE
Aquí es donde falta el pitón en mi opinión. Simplemente encuentro que el desarrollo de algoritmos (que involucra mucho álgebra lineal) es menos doloroso en el IDE de Matlab.
Matlab
Aquí hay algunas características clave de Matlab que serían difíciles de vivir sin un estudiante de ingeniería. Tenga en cuenta que los IDE de Python también tienen algunas de estas capacidades, pero se implementan más descuidadamente.
- Potente depuración: puede explorar fácilmente las funciones de una manera muy no restrictiva. Python también permite la depuración, pero a menudo no se implementa de manera tan clara en los IDE.
- Explorador de variables: MATLAB tiene un buen explorador de variables que siempre es bueno para ver muchos tipos de datos compatibles. Algunos IDE de python luchan por mostrar una gran cantidad de arreglos que pueden ser molestos.
- Supervivencia de variables: si el código se rompe durante el tiempo de ejecución, las variables aún persisten, lo que ayuda a la depuración. Además, es más fácil ejecutar diferentes scripts en una fila asumiendo variables persistentes. En Python, tendrá que guardar manualmente las variables en un script para que estén disponibles para otros scripts.
- Perfilador: Muy bueno para un desglose de dónde están sus cuellos de botella los algoritmos.
- Línea de comandos Las instrucciones de una sola línea se pueden ejecutar en la línea de comandos. Python es totalmente compatible con esto también en todos los IDE buenos.
- Herramientas de trazado de la GUI: los resultados y las variables se pueden trazar de forma rápida y sencilla desde la interfaz del usuario. La mayoría de los IDE de Python están orientados al desarrollo de software y, por lo tanto, no lo admiten (aunque sypder tiene un soporte limitado a través de matplotlib).
- Documentación: Todas las funciones tienen documentación nativa dentro del IDE.
Pitón
Hay algunos nuevos IDE de python que están empezando a competir con algunas de las ventajas clave de MATLAB. Personalmente, me gusta PyCharm que se lanzó recientemente como una versión de comunidad gratuita. Tiene las siguientes capacidades y está muy bien diseñado desde una perspectiva de interfaz de usuario.
- Bebugging
- Explorador de variables
- Línea de comando
- Documentación
Comparación de precios
Python es gratis y tiene una comunidad de soporte activa. Matlab también tenía una buena comunidad de apoyo, pero no es gratis.
He estado programando con Matlab durante aproximadamente 15 años, y con Python durante aproximadamente 10 años. Generalmente se descompone de esta manera:
Si puede cumplir con las siguientes condiciones: 1. Utiliza principalmente matrices y operaciones de matriz 2. Tiene el dinero para una licencia de Matlab 3. Trabaja en una plataforma que admite mathworks
Entonces, por supuesto, usa Matlab. De lo contrario, si tiene estructuras de datos que no sean matrices, desea una opción de código abierto que le permita entregar soluciones sin preocuparse por las licencias, y necesita construir en plataformas que mathworks no admita; Entonces, ve con Python.
El lenguaje matlab es torpe, pero la interfaz de usuario es resbaladiza. El lenguaje Python es muy bueno, con iteradores, generadores y herramientas de programación funcionales de las que carece matlab; sin embargo, tendrás que elegir y elegir una buena interfaz elegante si no te gusta (o no puedes usar) SAGE.
Espero que eso ayude.
Pruebe sagemath : está diseñado como un sustituto de código abierto para Matlab, Mathematica, etc. Se implementa en Python y se puede crear un script con Python, pero también agrega muchas características específicas de matemáticas. Hay un instalador para Mac , por lo que no necesitará descargar muchos paquetes individuales.
También está GNU Octave , otra alternativa de código abierto para Mathematica / Matab que tiene su propio lenguaje de programación. Sin embargo, no he encontrado ninguna información en una versión de Mac (aunque no he visto muy bien).
Sería genial si el proyecto mat2py conversión matlab a python en sourcefourge despegara ...
Tal vez le guste sagemath , que "combina el poder de muchos paquetes de código abierto existentes en una interfaz común basada en Python". Aquí hay una característica de la gira .
python(x,y) es bastante potente, pero solo para Windows o Linux, así que tendrás que usar bootcamp o Linux. Un paquete más liviano para las matemáticas es Matplotlib , que básicamente agrega habilidades de trazado al lenguaje Python (mejor usado junto con IPython ).