¿MATLAB es más popular y útil para la investigación que Python? ¿Por qué?

Al menos Python es mucho más popular en la comunidad de Machine Learning. En los últimos años, se han lanzado una serie de bibliotecas de aprendizaje profundo extremadamente potentes en Python, pero esta popularidad existía incluso antes de estos lanzamientos. Estoy seguro de que también hay otras comunidades CS donde se prefiere Python.

Algunos beneficios de Python sobre Matlab incluyen:

1. Python es fácil. La sintaxis de Python es solo un poco más complicada que Matlab, específicamente porque necesita importar las bibliotecas que desea usar usted mismo; mientras que en Matlab, tiene todas las cajas de herramientas instaladas y la funcionalidad principal a su disposición sin tener que preocuparse por cargar esas bibliotecas. Esto es un poco más conveniente si eres ingeniero civil o biólogo, pero si eres un graduado de CS o EE ya deberías estar acostumbrado a construcciones mucho más complicadas (pensando en C / C ++) que esta sobrecarga menor.

2. Python es gratis. He trabajado en los laboratorios de investigación de dos compañías gigantes y ambas tenían una sola licencia de Matlab para sus respectivos equipos (10 y 40 personas). En un lugar, era solo una licencia de nodo que alguien de la organización transferiría físicamente a su escritorio durante unos días si lo necesitara absolutamente, tiempo durante el cual nadie más podría usar Matlab. En el otro lugar, se instaló una versión de 8 años en una máquina en la que cualquier persona interesada en usarla iniciaría sesión de forma remota. Si no sabía cómo resolver su problema sin usar Matlab, podría ser bastante doloroso para usted. La licencia comercial de Matlab con cajas de herramientas y compiladores puede costar miles de dólares. ¡Entonces nada de esto debería ser sorprendente!

3. Python tiene bibliotecas mucho más útiles que Matlab. Estoy seguro de que debe haber nichos donde Matlab sobresalga, ¿tal vez alguna arquitectura o mecánica o cajas de herramientas específicas de CFD? Pero para el cálculo científico y numérico de propósito general, la minería de datos y la visualización, Python es mucho más poderoso.

4. Además de las bibliotecas, Python es más poderoso. Es un lenguaje de programación moderno adecuado con capacidades OOP, soporte para la web, multiproceso superior y es más rápido.

Para ser honesto, he usado Matlab ampliamente durante más de una década, y recientemente me mudé a Python (menos de 2 años), pero realmente me pregunto por qué alguien querría aprender Matlab hoy en lugar de Python, excepto aquellas aplicaciones de nicho.

Depende En muchas cosas Dado que ambas son herramientas, las herramientas están determinadas por el entorno del problema en el que está trabajando y tratando de resolver, no por las ideologías.

Así que no vayamos por opiniones y especulaciones. Veremos las tendencias de Google / datos académicos. Antes de hacer eso, observemos algunos puntos.

  1. Primero, tenga en cuenta que python, por sí mismo, no es comparable con matlab : comenzó como una herramienta de secuencias de comandos del lado del servidor y del servidor web que creció enormemente. Luego, las personas familiarizadas con ese lado de las cosas comenzaron a presionar para que fuera más general. Numpy y Scipy hacen que Python sea comparable con Matlab, pero solo hasta cierto punto.
  2. Luego tenga en cuenta que Python + numpy + scipy todavía no es comparable con matlab porque matlab profundiza en el hardware y python no cumple (IVI / VISA, PCIx DAQ, VXI, etc., luego ISP de cámara, visión USB3, GenIcam, Gentl, cumplimiento UVC además de toda la compatibilidad con .net y com para entornos Windows).
  3. Python ni siquiera está en el mapa para la generación específica de código / HDL de destino (no obstante, pyverilog). Matlab admite productos Altera / Analog / Xylinx / Altium / ARM / Atmel / Microchip, entre otros. Esto integra matlab dentro de una cadena de herramientas ASIC / control systems / RTOS / DSP en la que la mayoría de los SWE no operan. La mayoría de ustedes no tienen que preocuparse por desarrollar software / fw específico para la placa / versión de silicio, así que por supuesto no lo harán Entiende lo que esto significa. Y muchos de ustedes no fabrican su propio silicio: es posible que no entiendan por qué es útil verilog / VHDL gen para algos prototipo específicos.
  4. Hay otros misceláneos. puntos: Matlab tiene una arquitectura de CPU optimizada, puedo comprar tiempo de ingeniería de Mathworks dentro / fuera del sitio para resolver mis problemas. Matlab ha estado apoyando la computación científica mucho más tiempo que Python, por lo que está mejor integrado en las cadenas de herramientas específicas del dominio. Por ejemplo, el dominio histórico de Matlab en la simulación, visualización, documentación e implementación de productos en sistemas de control es más profundo que cualquier otro (hasta ahora). Simulink es sinónimo de controles educativos. Luego hay todo lo que tiene que ver con DSP, análisis de punto flotante / fijo, ID / estadísticas del sistema, control óptimo / robusto / estocástico, EDO, vibraciones, modelos aeroespaciales, teoría de codificación … etc. que hace que trabajar con Matlab sea un poco más fácil. y un ambiente más homogéneo para trabajar adentro.
  5. La investigación científica se basa principalmente en el control de instrumentos y la adquisición de datos. Junto con labview, matlab es una de las principales herramientas utilizadas aquí. (¿Qué hacemos si queremos usar Python? ¿Generar múltiples interfaces de pegamento?)

Todo lo demás que tiene matlab no es realmente una ventaja competitiva en mi opinión. Puede recrear todas las herramientas de simulación de software, por ejemplo, diseño de antena, matriz en fases, SA, wavelets, estadísticas, etc., incluso herramientas de gráficos de enlace simbólico y entornos de programación gráfica. Pero crear, mantener y actualizar el cumplimiento de hardware / bibliotecas de middleware es doloroso y OSS no hace un buen trabajo en esto. El modelo de negocio de RHEL existe específicamente para resolver problemas de OSS.

Esto debería ayudarnos a entender lo que realmente estamos tratando de comparar. Esto no es manzanas con manzanas.


Figura 1: Tendencias de Google que comparan las palabras clave: Matlab, numpy, labview, c ++ y python.

En primer lugar, tenga en cuenta que las fluctuaciones periódicas en C ++ y matlab provienen de sesiones académicas / semestres.

Luego tenga en cuenta que ‘python’ ha estado creciendo constantemente durante esta década, pero matlab se ha mantenido bastante constante. Por lo tanto, es probable que Python esté mordiendo parte de la participación mental de Matlab. Pero tenga en cuenta que esto no es realmente una comparación porque el crecimiento de Python se correlaciona con las tecnologías web. La comparación numpy ni siquiera aparece en esta escala. Por lo tanto, Matlab es ciertamente más popular para la computación numérica , incluso después de eliminar las tendencias educativas residuales.


Figura 02: Suponiendo que Google Scholar es un indicador proporcional para ‘investigación’, y que los términos de búsqueda ocurren con tanta frecuencia en un solo artículo para matlab / python, entonces el número total de apariciones de palabras clave para matlab vs python en publicaciones desde 2010 es de 451,000 a 93,000. Por lo tanto, matlab es más popular para la investigación (suponiendo que citar el entorno de programación utilizado indica ‘investigación’).


Figura 03: Suponiendo que la cantidad de libros técnicos que utilizan un entorno de programación particular es un buen indicador de interés en ese entorno, veamos la cantidad de libros en Amazon para python o matlab.

El total de libros de matlab en amazon está apenas por encima del número total de textos de python. Eso es comprensible ya que ambos han existido durante períodos bastante similares (’81 para Matlab, ’91 para Python). Estoy favoreciendo a Python al ignorar la cantidad de libros de aficionados en la mezcla que Python parece tener mucho (¿Python en RPi? ¡Vamos!). Pero el número de textos de ingeniería / ciencia / computación numérica para matlab parece abrumar a aquellos para python en una proporción entre 4: 1 a 10: 1 .


¿MATLAB es más popular y útil para la investigación que Python?

¿Popular? Si. ¿Útil? Parece ser así. Pero esta es una perspectiva ‘en general’. Python puede ser más popular en ciertos campos de CS. Pero ciertamente no en otros dominios. También hay razones heredadas para esto: muchos Unis han tenido acceso barato a matlab durante décadas; Casi todos los libros de texto de ciencias aplicadas y de ingeniería escritos después de la era fortran usan matlab; a pesar de que Python es gratuito, representa una curva de aprendizaje mucho más empinada e irrelevante en comparación con matlab para personas con antecedentes e intereses que no son desarrolladores.

En la academia, MATLAB es muy popular entre los investigadores.

Parece que ya sabías la respuesta a esa pregunta.

¿Crees que Python es mejor? ¿En qué manera?

No hace mucho tiempo contemplé forzar un cambio a una pila de Python + OpenCV para todos los empleados de uso informal en nuestra empresa (más barato, etc.) y cambiarme a mí mismo. Entonces tuve los dirs. de ASIC y firmware eche un vistazo a esa pila y vea si era compatible con sus flujos de trabajo. Terminaron enojándose con las alineaciones de dependencia de OSS donde cada característica menor fue prestada de algunos rando lib y los algoritmos eran muy, muy difíciles de rastrear o garantizar la calidad / cumplimiento. Sus comentarios me obligaron a seguir con Matlab porque los algoritmos están mejor documentados (sus implementaciones matemáticas exactas y citan literatura relevante) o, en el peor de los casos, las implementaciones de origen son una llamada telefónica y pago.

No. No creo que Python sea mejor para mis necesidades o para las necesidades de mi empresa. Los nuevos ingenieros le cuestan a las compañías un promedio de $ 150K donde vivo: Matlab, a ~ $ 10K / licencia (estimación superior) es una herramienta barata para garantizar la productividad y la cordura del ingeniero. Prefiero que mis ingenieros depuren / optimicen las implementaciones de producción que los casos de esquina esotéricos en las cadenas de herramientas OSS que de todos modos no podemos usar en producción debido a las restricciones de licencia / IP. Prefiero pagar por la confiabilidad, la trazabilidad, la optimización, los flujos de trabajo unificados y el soporte que usar implementaciones rápidas pero poco confiables.

Casi todas las compañías de Apple, Tesla, BMW, Mitsubishi, Boston, dinámica, SpaceX, Lockheed, GA, Boeing, Blue Origin, NIST y Sandia National Labs utilizan argumentos similares.

Uso del diseño basado en modelos para construir el Tesla Roadster

MATLAB y Simulink ayudan a aterrizar la nave espacial Boeing no pilotada

Lockheed Martin desarrolla un canalizador digital configurable y con calificación espacial

Diseño de un controlador de retroalimentación no lineal para el DARPA Robotics Challenge

Atlas Robot sale por la puerta, posiblemente para buscar un nuevo propietario

Origen azul | Ingeniero GN&C

[Tenga en cuenta que esto es principalmente material de marketing de Mathworks, pero también encontrará citas en publicaciones relevantes].

Así que realmente no entiendo por qué la gente en Quora ama tanto esta discusión de Matlab vs Python. Comparar Python con javascript es un ejercicio más adecuado (Javascript numérico), y comparar herramientas sin un contexto específico es realmente como preguntar, los martillos son más populares y útiles para la investigación que las llaves.

Si. Hay tres razones principales.

  1. Cualquiera que no sea ingeniero informático pero quiera usar la computadora para realizar manipulaciones y visualización de datos complejos puede usar Matlab sin comprender realmente la programación. Estos incluyen ingenieros mecánicos, ingenieros civiles e ingenieros aeronáuticos. No solo se usa para Machine Learning.
  2. Código fácil de seguir. El código de Matlab se ve exactamente como la ecuación que está tratando de resolver. De modo que demostrar y depurar código es súper fácil. Durante la investigación es útil si solo puede mirar la pizarra y copiar la ecuación tal como está en el código. Dado que los bloques de construcción son matrices en lugar de variables, no tiene que preocuparse por la matriz de matrices o buscar nuevos paquetes que tengan las estructuras de datos que desea usar. Por ejemplo, Andrew Ng en su curso muy popular Machine Learning – Universidad de Stanford | Coursera muestra el siguiente código de octava (equivalente de código abierto de Matlab) para diferenciar los sonidos que provienen de micrófonos separados espacialmente.

    [W,s,v]=svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');

    ¿Ver? Parece fácil de explicar e implementar.

  3. Es un paquete autónomo. Una vez que configura Matlab con el paquete apropiado para su aplicación, funciona como está. Hay bibliotecas estándar que todos usan. Puede enviar su código a alguien y funcionará exactamente igual.

Todavía preferiría R a Python. Solo las personas que prefieren Python en lugar de Matlab son personas que se dedican a la informática y trabajan en investigación donde el código debe implementarse como una aplicación.

Acabo de obtener una maestría en ciencias de la ingeniería (por investigación) donde la mayoría de las simulaciones se programaron en Python y C ++. Casi ninguno de los investigadores de esta universidad, incluido mi supervisor, está familiarizado con Python. Diría que es una mala elección usar Python cuando sus resultados e informes son evaluados y comentados por aquellos que solo conocen MATLAB.

MATLAB y Python son dos herramientas ligeramente diferentes. Cuando estás en la comunidad MATLAB, usar Python a veces puede permitirte descubrir fácilmente algo en los puntos ciegos de la comunidad. Pero la desventaja de usar Python es que, la comunidad no comprende lo difícil que necesitará para que funcione para muchas cosas que se hacen fácilmente en MATLAB pero difíciles en Python.

Es una buena opción hacer su investigación utilizando Python, siempre que sus supervisores también estén familiarizados con la herramienta.

Probablemente uno debería aprender ambos. Las simulaciones simples son mucho más rápidas para codificar y crear prototipos en MATLAB, y a menudo más rápido si no desea meterse con cython o envolver la línea C. Hay muy poco código repetitivo en MATLAB para hacer cosas como resolver DE o sistemas lineales grandes. (Después de todo, es el LABATORIO MATrix) Las simulaciones complejas se vuelven bastante difíciles de manejar en MATLAB y Python, siendo un lenguaje de programación de propósito más general que tiene cantidades particularmente grandes de azúcar sintáctica que permite que los programas mucho más grandes se administren con mayor facilidad. Además de en línea C, se pueden usar módulos programados en C y, por lo tanto, con un poco de cuidado y módulos personalizados cuando sea necesario, es posible obtener un rendimiento casi nativo.

Ambos uso MATLAB y Python. Pero creo que Python es más conveniente que MATLAB. Es aburrido que deba abrir la ventana de MATLAB cada vez que quiera usarlo. Puedo editar y ejecutar scripts de Python muy fácilmente en la terminal (por supuesto, uso el sistema Linux). Otra razón, python es gratis, MATLAB es un poco caro para un estudiante. Hasta ahora, no enfrento un problema que deba usar MATLAB en lugar de Python.

Utilicé ambos y trabajé en el aprendizaje automático, estoy un poco sesgado, pero descubrí que si bien MatLab funciona bien y tiene bibliotecas útiles, no se mantiene lo suficientemente rápido como para la literatura y no justifica el costo en comparación con lenguajes como python y Julia.