¿Por qué / cuándo debería preferir MATLAB sobre Octave?

82

En nuestra pequeña operación, necesitamos crear un prototipo de algoritmos en algún lenguaje de nivel superior antes de comprometernos con una implementación de C en hardware integrado.

Hasta ahora hemos estado usando MATLAB para hacer eso, pero los costos de licencia están comenzando a doler. Estamos considerando portar nuestro código MATLAB a Octave.

¿Hay alguna razón en particular para no hacer eso? ¿Romperemos alguna compatibilidad, especialmente si tenemos socios externos que insisten en usar MATLAB? ¿Hay alguna penalización de desempeño que podamos esperar?

lindelof
fuente
7
Debe considerar los costos de migración y capacitación.
Daniel Moura
10
¿Por qué no Python? stackoverflow.com/questions/1776290/… NumPy para usuarios de MATLAB: mathesaurus.sourceforge.net/matlab-numpy.html
Mikhail
5
@Mikhail: Debido a la interacción con socios que usan Matlab.
Jonas
2
@Jonas: los socios externos también podrían estar convencidos ... Si ven que todo el mundo está hablando de la migración a Python ...
Mikhail

Respuestas:

52

En 2008 intenté hacer lo mismo. Rápidamente noté los siguientes tapones de espectáculos:

  • Las cajas de herramientas no están tan completas ni tan bien probadas. En particular, la caja de herramientas de procesamiento de imágenes en la que se basaba en gran medida mi trabajo (el gran obstáculo fue que la imtransformación no se implementó).
  • El depurador y perfilador de Octave eran primitivos en comparación con los de Matlab.
  • Si trabaja con otras personas, puede resultar muy difícil lograr que cambien.
  • Si usa cajas de herramientas de terceros, estará solo haciendo que funcionen.
  • Los gráficos de Octave no tienen calidad de publicación.

Pero debo decir que en general me impresionó lo compatible que es Octave con Matlab, si su uso de Matlab es básico, puede tener suerte. Finalmente esto fue en 2008, en dos años las cosas pueden cambiar mucho.

carlosdc
fuente
8
No creo que el problema tenga nada que ver con los usuarios de MATLAB. Es genial que exista una alternativa de software libre y las personas que quieran trabajar en tal esfuerzo lo hagan. Las personas pueden hacer con su tiempo lo que quieran. Criticar a los usuarios de un programa determinado es pueril.
carlosdc
2
Para cualquiera que esté interesado, sigue el enlace para el instalador de Windows de Octave 3.8: mxeoctave.osuv.de
juliohm
2
Estos problemas se pueden solucionar a través del sitio web bountysource.com/teams/gnu-octave/issues por un costo diez veces menor que una licencia de Matlab.
Sergei
2
A partir de 2017, debería intentarlo. Se sorprenderá de que la mayoría de los scripts de MATLAB, si no todos, se ejecutarán listos para usar (aparte de cajas de herramientas específicas), debe dedicar una tarde a corregir algunas incompatibilidades menores. ¿Qué es una tarde en comparación con la ganancia de desarrollar software de código abierto sin licencia?
Hugo Raguet
24

Justo al lado de la parte superior de mi cabeza:

  1. Hay muchas cajas de herramientas que Octave no tiene, como descubrí cuando intenté hacer los deberes en un curso de Machine Learning hace dos semestres.
  2. Octave tiene un depurador muy inferior. Era casi imposible trabajar con él.
  3. Matlab es mucho más rápido para muchos tipos de operaciones.
  4. Las tramas de Matlab son mucho más bonitas.
  5. Octave no tiene una GUI nativa. Hay GUI para Octave, pero son inferiores a la nativa de Matlab.
Nathan Fellman
fuente
+1 para el punto # 5. Ni siquiera he encontrado una GUI gratuita para Octave que pueda instalar y que funcione de manera confiable, y mucho menos una buena. SciLab podría ser una buena alternativa a Matlab, pero no sé qué tan bueno es con respecto a los puntos # 1-4.
Stefan Smith
15

También he probado octava y R.

Con respecto a la octava: me impresionó mucho la similitud de la sintaxis de la octava. No me tomó mucho tiempo transportar mis scripts de MATLAB a una octava. Mientras tanto, tengo un problema particular al imprimir marcadores junto con la barra de error que fue solucionado por Jarno Rajahalme en nabble y para cambiar el tamaño de fuente xtick, solución que obtuve en una respuesta a la pregunta en nabble. Por lo tanto, todavía tiene algunos errores que con un poco de esfuerzo se pueden superar. Si tiene algún problema, puede probar el foro de correo nabble: [email protected]. Por cierto, mi equipo no puede adaptarse (fácil de usar) a él, ya que se adaptan a MATLAB, por lo que todavía estamos usando MATLAB. Dado que MATLAB está construido bajo gnuplot, otra forma de corregir sus errores es editar el archivo gnuplot generado. El mejor IDE que encontré fue QtOctave, que hice una breve reseña en "

Respecto a R: según una investigación realizada por SciViews, el rendimiento de R es superior a MATLAB y octava. No tengo mucha experiencia con R. Estudié el paquete mclust para escribir un capítulo de wikilibro sobre EM Clustering en R. Por cierto, parecen tener una comunidad muy activa. Por lo tanto, puede encontrar paquetes de terceros para propuestas, que no están tan estandarizados en la OMI. El mejor IDE que encontré fue el complemento StatET para eclipse, JGR (Java GUI para R) y emacs. A pesar del tiempo que cuesta aprender un nuevo lenguaje de programación, si eligiera una plataforma de código abierto para hacer los gráficos de mi experimento y algunos análisis de minería de datos, probaría R.

Emanuel Vianna
fuente
10

Octave tiene varias mejoras sintácticas en matlab, por ejemplo, puede decir endif endfory en endfunctionlugar de solo end, lo que facilita la depuración.

Octave también le permite generar funciones dinámicamente y tener múltiples funciones definidas en scripts y archivos de funciones. Lo cual es mucho mejor que el enfoque de un solo archivo y una función de matlab.

Finalmente, octave tiene parcellfuny pararrayfunson herramientas de procesamiento paralelo muy poderosas de las que matlab carece por completo. Hay un parforin matlab, pero en mi opinión no es la mejor manera de hacerlo.

Las desventajas de la octava son que están ligeramente atrasados ​​en las cajas de herramientas, aunque si miras puedes encontrar cosas similares. fsolvey lsodeparece un poco más lento, pero más robusto, en octava por alguna razón. También un gran fastidio para algunas personas tiende a ser la falta de enlace simbólico y la caja de herramientas DAQ, pero esas cosas van a ser propietarias de todos modos.

Python / Numpy definitivamente vale la pena: es más poderoso pero su sintaxis está dirigida a piezas de código más complejas.

usuario1240280
fuente
1
Lo acabo de probar y, por lo que sé, pararrayfun / parcellfun no son compatibles con Windows (bueno, no de forma nativa sin Cygwin) failed to open pipe: pipe: not supported on this system. Estoy usando los binarios de Windows prediseñados Octave_3.6.1_VS2010.
Amro
2
sí, supongo que eso se debe a las diferencias en cómo se ejecutan los scripts de shell en Windows y Linux, ya que pararrayfun / parcelfun funciona generando algunos procesos secundarios. No sé cómo funcionaría esto en Windows, ni siquiera estoy seguro de si el binario de Windows se ejecuta en un shell o si está emulado.
user1240280
1
lástima, una versión paralela (portátil) de cellfun / arrayfunc parece una buena idea ... Tal vez MATLAB también debería hacerlo :)
Amro
@ user1240280: poder definir funciones dentro de un script es en mi humilde opinión una gran ventaja de Octave sobre Matlab. Le permite escribir un programa completo de forma modular y guardarlo en un archivo, para que pueda enviárselo fácilmente a usted mismo oa otras personas. Pero la falta de GUI de Octave es un gran inconveniente.
Stefan Smith
@stefan smith: Octave ahora tiene una interfaz gráfica de usuario nativa, todavía experimental, pero según mis experiencias recientes, es bastante utilizable y más o menos estable. puedes probarlo conoctave --force-gui
Legionair
9

Octave no tiene guide, lo que hace que la creación de GUI sea muy fácil. Utilizo regularmente la guía para crear herramientas para mis colegas que no utilizan MATLAB.

Doresoom
fuente
6
¿Octave tiene una guía equivalente? ¿Es por eso que me votaron en contra?
Doresoom
8

Para su caso de uso, la octava puede ser superior a MATLAB:

  • Tiene una sintaxis que le permitirá escribir código un poco más cercano a C. es decir, + =, - =, valores de parámetros de función predeterminados, literales de cadena entre comillas dobles, etc.

  • Suponiendo que sus chips sean más lentos que un procesador de escritorio, es probable que la velocidad no sea un problema.

  • Dado que se inicia mucho más rápido que matlab, es más práctico integrarlo en scripts de shell para realizar pruebas.

  • Para la creación de prototipos, el trazado es más que adecuado; la gente está acostumbrada al estilo de MATLAB.

  • La relativa falta de cajas de herramientas no es un gran problema, ya que de todos modos no estarían disponibles en su plataforma de destino.

Utilizo ambos, y cada vez que cambio, echo de menos funciones del otro.

Andrew Wagner
fuente
6

Es interesante ver cómo funciona la alternativa de código abierto para las estadísticas pero no para el análisis numérico. R (la octava de las estadísticas) es hoy en día mucho más popular que el comercial S-plus (el matlab de las estadísticas). Los problemas mencionados como razones para no cambiar de matlab que se encuentran en las otras respuestas también se aplicaron a R. Pero aún así, todos comenzaron a contribuir y ahora R es el estándar, con mejores gráficos, mejores paquetes y no más dependencia del proveedor.

Así que también podrías preferir la octava sobre el matlab, si puedes superar el dilema de los prisioneros.

SiggyF
fuente
4
Deberías haber puesto esto en un comentario, no en una respuesta.
Dima
5

Hay un buen WikiBook en MATLAB con una lista de diferencias entre MATLAB y Octave .

En mi experiencia, el núcleo de MATLAB está bien adaptado a Octave, pero las cajas de herramientas tienen distintos niveles de compatibilidad, por lo que su decisión depende de lo que esté intentando codificar exactamente.

Algunas cosas de las que Octave carece, AFAIK, son la estrecha integración con el código .NET y el constructor de interfaz guidegráfica de usuario (aunque hay muchas otras herramientas de generación de interfaz gráfica de usuario que Octave puede usar).

Además, como han señalado otros, gran parte de lo que paga con MATLAB es la interfaz elegante y las herramientas de depuración / creación de perfiles. Los programadores experimentados probablemente puedan manejar las alternativas, pero los novatos pueden tener dificultades.

Richie algodón
fuente
3

Tenga en cuenta que Octave admite construcciones de lenguaje que no están presentes en Matlab (p. Ej., Operadores de incremento automático, declaraciones hasta el final, etc.). Esto hace que a veces sea molesto portar el código desarrollado (por alguien que no esté familiarizado con las limitaciones de Matlab) en Octave a un entorno Matlab.

Hay algunas otras limitaciones / diferencias en Octave FAQ .

jhfrontz
fuente
2

Definitivamente debería preferir Matlab a Octave si puede pagarlo.

No tengo mucha experiencia con Octave, pero esperaría problemas si su código usa cajas de herramientas de Matlab, gráficos sofisticados o interfaz gráfica de usuario de Matlab.

Esperaría que fuera como OpenOffice vs. MS Office. Mayormente compatible, pero lo suficientemente diferente como para causarle dolor de cabeza.

Dima
fuente
0

He portado con éxito algunas aplicaciones de regresión lineal y programación cuadrática a Octave.

La regresión lineal (operador de barra invertida) funcionó sin ningún ajuste. En el caso de la programación cuadrática, tuve que cambiar de fmincon () a sqp () , dando resultados similares.

Aún así, las cajas de herramientas y la GUI en Octave son, de hecho, menos maduras (pasé mucho tiempo en cosas básicas), aunque ha progresado rápidamente en los últimos dos años.

Ben
fuente