pasar online funciones ejecutar con comandos codigo archivos abrir matlab octave

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



pasar codigo matlab a octave (11)

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

No he tenido mucha experiencia con Octave, pero podría esperar problemas si tu código está usando cajas de herramientas de Matlab, tramas de lujo o gui de Matlab.

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

En nuestra operación de cinta de zapatos necesitamos prototipar algoritmos en algún lenguaje de nivel superior antes de comprometernos con una implementación C en hardware incrustado.

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

¿Hay alguna razón en particular para no hacer eso? ¿Rompemos cualquier compatibilidad, especialmente si tenemos socios externos que insisten en usar MATLAB? ¿Hay alguna penalización en el rendimiento que podamos esperar?


En 2008 intenté hacer lo mismo. Rápidamente noté los siguientes topes de la demostración:

  • Las cajas de herramientas no son tan completas ni están tan bien probadas. En particular, la caja de herramientas de procesamiento de imágenes en la que mi trabajo se basó en gran medida (el gran obstáculo de la demostración fue que no se implementó el cambio de imagen).
  • El depurador y perfilador de Octave eran primitivos en comparación con los de Matlab.
  • Si trabajas con otros, puede ser muy difícil conseguir que cambien.
  • Si usa cajas de herramientas de terceros, está por su cuenta consiguiendo que trabajen.
  • Las parcelas de Octave no son de calidad de publicación.

Pero debo decir que, en general, quedé impresionado con la compatibilidad de 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.


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

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


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 portado a Octave, pero las cajas de herramientas tienen diferentes niveles de compatibilidad, por lo que su decisión depende de qué es exactamente lo que está tratando de codificar.

Algunas cosas de las que Octave carece, AFAIK, son la estrecha integración con el código .NET y el gui builder, guide (aunque hay muchas otras herramientas de compilación de GUI que Octave puede usar).

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


He probado octava y R también.

En cuanto a la octava: quedé muy impresionado con la similitud de la sintaxis de octava. No me llevó mucho tiempo transportar mis scripts de MATLAB a octava. Mientras tanto, tengo un problema particular en la impresión de marcadores conjuntamente con la barra de errores que Jarno Rajahalme resolvió en nabble y para cambiar el tamaño de la fuente xtick, solución que obtuve en una respuesta a la pregunta en nabble. Por lo tanto, todavía tiene algunos errores que con cierto esfuerzo se pueden superar. Si experimenta algunos problemas, puede probar el foro de correo Nabble: [email protected]. Por cierto, mi equipo no puede adaptarse (amigable para el usuario), como se adaptan a MATLAB, por lo que todavía estamos usando MATLAB. Como MATLAB está construido bajo gnuplot, otra forma de corregir sus errores es editando el archivo gnuplot generado. El mejor IDE que encontré fue QtOctave, que hice una breve reseña en "Remember Blog".

En cuanto a R: de acuerdo con 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 wikibook sobre EM Clustering en R. Por cierto, parece que tienen una comunidad muy activa. Por lo tanto, puede encontrar paquetes de terceros para propuestas que no están estandarizados de la OMI. El mejor IDE que encontré fue el plugin StatET para eclipse, JGR (Java GUI for R) y emacs. A pesar del costo de tiempo para aprender un nuevo lenguaje de programación, si yo quisiera elegir una plataforma de código abierto para hacer mis gráficos de experimento y algún análisis de minería de datos, probaría R.


He transferido 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 GUI en Octave son, de hecho, menos maduras (pasé tanto tiempo en cosas básicas), aunque ha estado progresando rápidamente en los últimos dos años.


Justo al lado de la parte superior de mi cabeza:

  1. Hay muchas cajas de herramientas que Octave no tiene, como descubrí cuando traté de hacer la tarea en un curso de Machine Learning hace dos semestres.
  2. Octave tiene un depurador muy inferior. Era casi imposible trabajar con.
  3. Matlab es mucho más rápido para muchos tipos de operaciones.
  4. Las tramas de Matlab son mucho mejores.
  5. Octave no tiene una GUI nativa. Hay GUI para Octave, pero son inferiores al nativo de Matlab.

Octave no tiene una guide , lo que hace que la creación de GUI sea muy fácil. Uso regularmente una guía para hacer herramientas para mis compañeros que no son de MATLAB.


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

  • Tiene una sintaxis que le permitirá escribir código que está un poco más cerca de C. ie + =, - =, valores de parámetros de funciones por defecto, literales de cadenas de comillas dobles, etc.

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

  • Dado que se lanza mucho más rápido que el 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.

Yo uso ambos, y cada vez que cambio, extraño las características del otro.


Tenga en cuenta que Octave admite construcciones de lenguaje que no están presentes en Matlab (p. Ej., Operadores de incremento automático, declaraciones do-until, etc.). Esto hace que a veces sea molesto para el código de puerto 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 .


Octave tiene varias mejoras sintácticas en matlab, por ejemplo, puedes decir endif endfor y endfunction lugar de just end , lo que hace que la depuración sea mucho más fácil.

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

Finalmente, octave tiene parcellfun y pararrayfun que son herramientas de procesamiento en paralelo muy potentes que matlab no tiene. Hay un parfor en matlab, pero no es la mejor manera de hacerlo en mi opinión.

Los contras para la octava son que están un poco atrás en las cajas de herramientas, aunque si miras puedes encontrar cosas similares. fsolve y lsode parecen un poco más lentos, pero más robustos, 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 de DAQ, pero de todas maneras esas cosas van a ser propietarias.

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