Desde el punto de vista de un electricista, ¿qué lenguaje de programación es mejor, Matlab o Python?
Hay algunos temas que los ingenieros están garantizados para discutir.¿Quién de la generación anterior puede olvidar guerra endiana Por ejemplo, en los años 80 y 90? Uno de esos temas presenta los méritos relativos de diferentes lenguajes de programación. Por ejemplo, desde el punto de vista de un ingeniero eléctrico, ¿qué es mejor, Matlab o Python?
Manipulación de matrices en Python y Matlab (Fuente: Silicon Labs)
Aquí está la respuesta: Ambas herramientas son poderosas (que es lo que dificulta un poco la elección) y ambas ofrecen excelente soporte y documentación. Además, ambos son tan populares que tiene sentido compararlos.
La gran diferencia entre estos lenguajes es el modelo de negocio. Seamos honestos, Matlab es caro. Todas las organizaciones para las que trabajé tenían un número limitado de licencias disponibles, lo que era costoso y generaba largas filas de ingenieros frustrados que exigían la siguiente licencia disponible. En otras palabras, con Matlab obtienes lo que pagas. Además de una excelente documentación, Matlab también ofrece una amplia variedad de cajas de herramientas.
Python, por otro lado, es de código abierto. Es gratis y viene con un gran apoyo de la comunidad. Nos guste o no, el software de código abierto es la corriente principal. Personas de todos los ámbitos de la vida y disciplinas están invirtiendo en Python, especialmente en la industria electrónica. El crecimiento, la amplitud y el uso de Python significan que seguirá existiendo durante mucho tiempo.
Python puede hacer más que la mayoría de las otras herramientas a medida que más y más personas lo personalizan para cada propósito concebible.se les ocurrió micro pitón Para programar microcontroladores (MCU) con memoria limitada. Python está respaldado por una comunidad de código abierto excepcionalmente grande. En el lado negativo, Python tiene algunas características. Problema de compatibilidad con versiones anteriores entre 2.7 y 3.xEsto es un dolor para aquellos que crearon programas de infraestructura en 2.7, pero no es un problema para los programas “desechables”.
En mi opinión, solo los ingenieros eléctricos (o ingenieros de cualquier tipo) pueden aprender más sobre esta herramienta única y popular. Primero, Python puede reemplazar a la mayoría de las otras herramientas de creación de scripts y modelado. En segundo lugar, abre posibilidades para un mayor desarrollo. Python también tiene excelentes capacidades de aprendizaje automático y análisis de datos (como Pandas). Entonces, una vez que aprenda Python, puede dar el siguiente paso y usarlo para aprender más sobre otras áreas. Finalmente, aprender Python te permitirá hablar el mismo idioma que los demás. Desde desarrolladores de software hasta analistas financieros, todos encuentran formas de usar Python.
Ahora que hemos elogiado a Python, volvamos a comparar Matlab y Python. Matlab es la herramienta (¿o lenguaje?) más popular entre los ingenieros eléctricos. Según MathWorks, sobre 5.000 escuelas de ingeniería utilizan Matlab Dicho esto, la mayoría de los ingenieros ya conocen Matlab. Como tal, Matlab ya tiene modelos y algoritmos implementados, lo que dificulta la migración a otros entornos.
De hecho, estamos tan acostumbrados a Matlab que muchos desarrolladores de software que trabajan en otros lenguajes comienzan a contar desde ‘i=0’, mientras que algunas personas piensan que las matrices comienzan en ‘index=1’. (Curiosamente, esta pequeña diferencia puede dar lugar a problemas de malentendidos. Por ejemplo, en una de las placas de radio de Silicon Labs, el diseñador del chip nombró a los dos puertos de antena RF1 y RF2. .placa).
Matlab es costoso pero muy poderoso y está bien integrado en la educación en ingeniería, pero esto está comenzando a cambiar para los jóvenes ingenieros. Por ejemplo, esta primavera estoy impartiendo un curso de “Introducción a Python” para estudiantes de segundo año de EE en la Universidad de Texas en Austin. Esto fue antes de que aprendiera algo sobre Matlab. Además del hecho de que Python es gratuito y está de moda, también puede hacer cosas fuera de Matlab.
Sumérgete en los detalles (La maldición del ingeniero)
Ahora que tenemos el panorama general, profundicemos en los detalles. Para dar una evaluación justa de qué herramienta usar en un escenario particular, comencemos con una pequeña digresión y examinemos el uso diario de la codificación en el mundo de la ingeniería.
A veces siento que la maldición de ser ingeniero es que otras personas no te ven como realmente eres. Por ejemplo, casi todos los electricistas que conozco tuvieron que explicarles a sus padres que ser ingeniero no tenía nada que ver con su capacidad para instalar termostatos inteligentes. Del mismo modo, los ingenieros pueden saber codificar, pero deben recordarse a sí mismos y al mundo que no son programadores. El CTO de Silicon Labs, Alessandro Piovaccari, escribió una vez: Por ejemplo, diseñar un nuevo transceptor de radio requiere un conocimiento ágil de la física subyacente, la tecnología del proceso de fabricación y conocimientos que van desde el diseño a nivel de dispositivo hasta el diseño lógico y a nivel de transistor. La programación se proporciona como una utilidad para que los ingenieros la utilicen junto con equipos de prueba y calculadoras.
El primer uso de la codificación que se me pasó por la cabeza en el mundo de la ingeniería fue resolver problemas numéricos iterativos (también conocidos como optimización). Un ejemplo es encontrar el valor del elemento reactivo apropiado en n.el Pide filtro resonante. Algunos ingenieros extraen una hoja de Excel y crean un gráfico de todos los valores posibles con solo unos pocos clics. Luego lleve el gráfico al laboratorio y suelde y pruebe diferentes elementos hasta que determine los valores óptimos de L y C (inductor y capacitor). Dicho esto, existen algunas desventajas en el uso de Excel. En primer lugar, su precisión numérica es discutible. En segundo lugar, Excel no se presta a la extensibilidad. Si implementó el mismo cálculo en Python o Matlab, luego puede convertir su algoritmo a un equivalente genérico. De esa manera, nunca tendrá que preocuparse por escribir este algoritmo nuevamente. Además, con Matlab o Python, también puede incluir varios archivos de parámetros S para tener en cuenta las interconexiones y los efectos de soldadura entre diferentes elementos.
Otro uso de ingeniería de la codificación es el modelado de sistemas. El modelado es un área donde Python y Matlab se superponen mucho. Es fácil decir que el trabajo se puede hacer con la misma eficiencia en cualquier herramienta y con una sintaxis muy similar (numpy, scipy y matplotlib combinados hacen de Python un paraíso para los usuarios de Matlab). dominio. Matlab proporciona cajas de herramientas muy específicas para problemas muy específicos (la caja de herramientas Schreier DSM es uno de los innumerables ejemplos). Además, Matlab proporciona Simulink. Esto, como era de esperar, hace que Matlab sea irremplazable para modelar problemas que requieren Simulink (que yo sepa, ningún competidor puede igualar a Simulink).
Las mentes de ingeniería son rápidas e inteligentes, pero también tienden a ser perezosas. Este no es necesariamente algo malo. Su compañero ingeniero Scott Schwartz dijo una vez: Pero entre nosotros solos, no quiero gastar cada momento despierto en eso. Scott se refería a la automatización de pruebas y mediciones. Esta es un área donde las capacidades de secuencias de comandos de Python son muy útiles y, para ser honesto, no estoy seguro de que Matlab pueda competir con Python en esta área. Los verdaderos competidores que vi fueron C# y Perl, pero esos días quedaron atrás y hay un cambio omnipresente hacia el uso de Python para la automatización de entornos de pruebas y secuencias de comandos, por lo que sé.
Una configuración de medición de sistema en chip (SoC) incluye una serie de instrumentos (analizador de espectro, medidor de potencia, fuente de alimentación, osciloscopio, etc.) y un dispositivo bajo prueba (DUT), así como varias placas de prueba. En la escuela, tenía que resolver todo a mano, lo cual era un fastidio. No hay nada como pasar horas escribiendo scripts (Python o C#) que controlan y recopilan datos de todos los dispositivos en su banco de pruebas y observa cómo las máquinas trabajan juntas felizmente. Los escaneos y barridos se convierten en una cuestión de unas pocas líneas de código.

Una configuración típica de medición de SoC incluye muchos instrumentos (analizadores de espectro, medidores de potencia, fuentes de alimentación, osciloscopios, etc.) y muchos DUT (posiblemente varias placas de prueba). (Fuente: Laboratorio de silicio)
La prueba de software es otro caso de uso. Si tiene una nueva implementación de software de bajo nivel (como C o ensamblaje) para su MCU, puede ser muy útil probarlo primero con una herramienta como Python. Los scripts de Python van mucho más allá de las simples pruebas. Recuerde que Python es muy adecuado para el modelado, el procesamiento de señales y la visualización de datos. Entonces, dentro del mismo intérprete, podemos codificar un programa que controle las medidas, procese los datos resultantes y escupa algunos gráficos para visualizar los resultados. En otras palabras, Python actúa como el “pegamento” entre los scripts, incluso si los otros scripts no están escritos en Python.
Una caja de herramientas de ingeniería puede tener Python, Matlab, Microsoft Excel y algunas otras herramientas juntas. No hay nada malo en coexistir. Piense en osciloscopios y multímetros. El primero puede reemplazar al segundo en muchos escenarios, pero el último es mucho más rápido y fácil de usar para medir valores de CC. Las herramientas coexisten. Lo que realmente importa es comprender dónde cada herramienta proporciona la mejor funcionalidad y hacer el trabajo de manera efectiva y eficiente. Por lo tanto, dejo una tabla simple que compara Python y Matlab y muestra qué herramienta es más eficiente para un propósito en particular.

Comparando Python y Matlab (Fuente: Silicon Labs)
¿Alguna vez has usado uno o ambos de estos idiomas? Si es así, ¿podrías compartir tus pensamientos y experiencias en los comentarios a continuación?
Expresiones de gratitud: Gracias a los miembros del equipo de Silicon Labs, John Khoury, Vitor Pereira y Francesco Barale por plantar las semillas de este artículo. Compartieron conmigo su entusiasmo por explorar las diferencias entre Matlab y Python.