MATLAB para progtwigdores de Python

He usado MATLAB una y otra vez antes, pero necesito desarrollar una buena comprensión de eso ahora, y el lenguaje con el que estoy más familiarizado es Python. ¿Desea describir una función de lenguaje MATLAB, idioma, mejores prácticas o filosofía en comparación con Python?

Hay una gran cantidad de rumores y recursos para ir en la dirección opuesta, la conversión de MATLAB a (herramientas de Python +), pero esa no es la forma en que debo hacerlo. ¿En qué estructuras de datos debo intercambiar, debo usar clases, dónde podría ir mal la intuición NumPy , etc.?

La documentación es uno de los puntos fuertes de MATLAB . Si necesita ingresar a MATLAB, uno de los mejores lugares para comenzar es la sección ” Cómo comenzar “. Algunas de ellas serán demasiado básicas para usted, lo cual es mucho mejor que si fuera demasiado avanzado, pero le mostrará los aspectos más importantes del idioma.

Una de las cosas que puede tener en cuenta es que MATLAB comienza a indexar en 1. Para otros aspectos de los progtwigdores de MATLAB que deben tener en cuenta, puede consultar las respuestas a esta pregunta .

Si necesita MATLAB para una tarea específica, la ayuda proporciona muchas demostraciones que lo colocarán en el camino correcto.

El tesauro de lenguajes matemáticos o los comandos de MATLAB en Python / NumPy es excelente para buscar “traducciones” entre tareas comunes de MATLAB y NumPy.

No puedo pensar en un tutorial particular. Pero un recurso que he encontrado realmente útil para descubrir los entresijos de MATLAB son los blogs:

  • Blogs de MATLAB Central

En particular, Loren en el arte de MATLAB y Steve en el procesamiento de imágenes son dos cosas de las que he aprendido mucho.

  1. MATLAB tiene una excelente documentación. En un mundo donde todos se quejan de lo mala que es la documentación X, creo que la documentación de MATLAB contribuye significativamente a su popularidad. Python’s también es bueno, pero MATLAB se siente un poco más accesible de inmediato. Se puede decir que Mathworks se preocupa por ello.

  2. En MATLAB, la matriz es fundamental. Si hace x = 3 en el espacio de trabajo, puede realizar operaciones matriciales para x (por muy insignificante que sea) como la transposición, la inversa, la composición de eigendec, etc. No es necesario realizar conversiones. En Python / NumPy, aún necesita convertir matrices a matrices usando scipy.matrix antes de realizar operaciones de matriz.

  3. No estoy familiarizado con ninguna filosofía MATLAB explícita y popular análoga al zen de Python (es decir, import this ). Pero muchas características son similares: fácil experimentación, rápido tiempo de desarrollo, fácil de depurar y perfilar, alto nivel, extensible.

  4. MATLAB no enfatiza la orientación a objetos como Python. OO todavía es posible en MATLAB (por ejemplo, las clases son compatibles), pero no conozco a muchas personas que lo utilizan.

  5. Me gusta pensar de la siguiente manera: NumPy es como el núcleo de MATLAB, SciPy es como las cajas de herramientas de MATLAB, Matplotlib te permite trazar como MATLAB y iPython es el espacio de trabajo de MATLAB.

  6. Oh sí … ¡MATLAB comienza a indexar con 1, no con cero! Esta es una consecuencia lógica de la idea fundamental de MATLAB de que cada “cosa” numérica es una matriz, y en el álgebra lineal, las matrices a menudo se indexan a partir de 1.

Un par de problemas de rendimiento:

  1. No uses clases: las clases de MATLAB son realmente muy lentas.

  2. No usar for bucles: aprenda cómo vectorizar operaciones. MATLAB es rápido en funciones vectorizadas y exorbitantemente lento cuando se realiza for bucles.

Me pareció útil esta página de SciPy.org , aunque funciona mejor para la otra dirección y no aborda directamente muchas características básicas del lenguaje.

En la misma linea:

  • La sección “Comparación con MATLAB” de esta Computación Numérica en presentación de Python
  • Hoja de trucos NumPy for MATLAB Users

Pero ninguno de estos realmente me explica el lenguaje y las estructuras de datos de MATLAB como un buen libro sobre el idioma, de una manera que aprovecha mi conocimiento actual de Python . (Sin embargo, la pregunta a la que Jonas se vincula lo hace – mira eso).

No se puede hacer indexación directamente en el resultado de la función;

 from numpy import * sin(array(range(10))*pi/10)[3] 

No funciona en MATLAB ; Necesitas guardar primero el resultado:

 x = sin(0:pi/10:pi) x(3) 

Esto es del tutorial de Jonas.