¿Diferencias entre octava y MATLAB? [cerrado]

272

Soy un programador que conoce Python, Ruby y algunos C que intentan decidir si aprender GNU Octave o Matlab. Sé que tienen mucho en común , pero no me queda claro cuán similar es la sintaxis o incluso las estructuras de datos. Todos dicen que son "similares", pero nadie dice cuán similares son en realidad. El enlace anterior muestra varios ejemplos en los que son sintácticamente similares o idénticos, ¿es esto cierto para todo el idioma?

Estoy tratando de aprender el lenguaje en general para hacer más computación científica, posiblemente usando algunas bibliotecas de análisis de imágenes. Sé que hay muchos otros idiomas en los que podría programar, pero mis asesores dicen que conocer MATLAB u Octave es crucial en las ciencias.

Además, ¿vale la pena el costo de Matlab? No tengo mucho dinero, pero si hay diferencias importantes en las bibliotecas o en otros lugares, estoy seguro de que podría encontrar el dinero.

lswim
fuente
8
Como eres estudiante, vale la pena verificar si tu escuela proporciona matlab a los estudiantes de forma gratuita / barata; mis escuelas de pregrado y posgrado hacen eso, lo que hace que sea un poco más fácil decidir ir con matlab.
Dougal
23
Sí, pero cuando salga de la universidad y vaya a algún centro de investigación, tendrá que comprarlo y para entonces solo conocerá a Matlab y no las alternativas. Entonces, pensando a largo plazo, si quieres hacer una carrera en ciencias que parece que él quiere, no debes ignorar esto. Sin mencionar que tales licencias generalmente tampoco se pueden usar para clústeres.
carandraug
2
Mientras seas estudiante, deberías poder obtener una licencia de matlab por alrededor de 100 dólares (USD). De acuerdo, si quieres algunas de las otras cajas de herramientas, son 29 USD adicionales por caja de herramientas. Entonces, sin saber qué cajas de herramientas podría desear / necesitar, es difícil justificar el costo.
Ben A.
23
+1 Acabo de comenzar a aprender Octave hoy porque actualmente estoy estudiando Machine Learning y el profesor me recomendó aprender Octave (porque es gratis, porque METLAB es costoso y porque el estudiante será mucho más productivo haciendo funcionar el algoritmo de la máquina) primero usando Octave o METLAB primero, luego una vez que funciona, luego cambia a Java o C ++)
Anthony
77
Te aconsejo que uses python + opencv
gukoff

Respuestas:

235

En lugar de proporcionarle una lista completa de diferencias, le daré mi punto de vista sobre el asunto.

Si lee detenidamente la página wiki que proporciona, a menudo verá oraciones como "Octave admite ambos, mientras que MATLAB requiere la primera", etc. Esto muestra que los desarrolladores de Octave intentan hacer que la sintaxis de Octave sea "superior" a la de MATLAB.

Esta actitud hace que Octave pierda su propósito por completo. La idea detrás de Octave es (o se ha convertido , debería decir, ver los comentarios a continuación) para tener una alternativa de código abierto para ejecutar m-code. Si trata de ser "mejor", entonces trata de ser diferente , lo cual no está en línea con las razones por las que la mayoría de la gente lo usa. En mi experiencia, ejecutar cosas desarrolladas en MATLAB nunca funciona de una sola vez, excepto por las cosas realmente simples y muy cortas: para cualquier función considerable, siempre tengo que traducir muchas cosas antes de que funcione en Octave, si No volver a escribirlo desde cero. Cómo es esto mejor , realmente no veo ...

Además, si aprende Octave, hay mucha sintaxis permitida en Octave que no está permitida en MATLAB. Significado: el código escrito en Octave a menudo no funciona en MATLAB sin numerosas conversiones. ¡Tampoco es compatible al revés!

Podría continuar: MathWorks tiene muchas cajas de herramientas para MATLAB, hay Simulink y sus productos relacionados para los cuales realmente no hay equivalente en Octave (sí, tendrías que pagar por todo eso. Pero a menudo tu empleador / escuela lo hace de todos modos y bueno, al menos existe ), el cumplimiento comprobado de varios estándares de la industria, herramientas de prueba, herramientas de validación, sistemas de gestión de requisitos, generación de informes, una base de usuarios y comunidad mucho más amplia, etc., etc. MATLAB es solo una pequeña parte de algo mucho más grande. Octave es ... solo Octave.

Entonces, mi consejo:

  • Averigüe si su escuela pagará por MATLAB. A menudo lo harán.
  • Si no lo hacen, y si puedes juntar el dinero, compra MATLAB y aprende a usarlo correctamente. A la larga es la mejor decisión.
  • Si realmente no puede obtener el dinero, use Octave, pero aprenda la sintaxis de MATLAB y manténgase alejado de la sintaxis exclusiva de Octave. (ver nota)

¿Por qué este último punto? Porque en las ciencias, a menudo hay grandes bases de código escritas completamente en MATLAB. Hay profesores, ingenieros, estudiantes, programadores profesionales, muchas personas que conocen todos los detalles intrincados y sangrientos de MATLAB, y no tanto de Octave.

Si usted consigue un nuevo trabajo, y todo el mundo en su nueva oficina habla español, que es un poco arrogante a la demanda de todo el mundo que empiezan a hablar Inglés a partir de entonces, simplemente porque usted no habla / como el español. Lo mismo con MATLAB y Octave.

NB : si todos los votantes negativos pudieran dejar un comentario con sus argumentos y razones para no estar de acuerdo conmigo, sería genial :)

Nota: Octave se puede ejecutar en "modo tradicional" (al incluir el indicador --tradicional al iniciar Octave), lo que hace que se produzca un error cuando se utiliza cierta sintaxis exclusiva de Octave.

Rody Oldenhuis
fuente
25
Sobre la falta de JIT, ya se ha implementado en la versión de desarrollo de Octave. No sé cuándo se lanzará, pero lo he construido y la diferencia es enorme para el código de bucle. Y para mantenerse alejado de la sintaxis de Octave, existe la opción tradicional de Octave. No digo que el código de Matlab siempre se ejecute en Octave, pero esto está mejorando mucho con cada versión y la compatibilidad es una de sus prioridades (sin mencionar que incluso las diferentes versiones de Matlab tienen suficientes incompatibilidades entre ellas).
carandraug
14
Y lo que llamas es apegarse a una sintaxis superior ... si tuvieras la libertad de cambiar Matlab, agregar una sintaxis adicional o diferentes funciones, ¿no? Estas son características que los usuarios implementaron y no rompen la compatibilidad. Más a menudo que no, las cosas nuevas son rechazadas por eso. La idea es que el lenguaje Matlab es un subconjunto del lenguaje Octave. Si crees que la idea es increíble, entonces deberías unirte porque es un proyecto comunitario y tiene las características que la comunidad se molesta en desarrollar.
carandraug
19
@RodyOldenhuis no se supone que sea un clon. El desarrollo de octavas no comenzó de esa manera, simplemente fue empujado cada vez más en esa dirección por los usuarios que siguen enviando parches para ello sciencedirect.com/science/article/pii/S0959152412000911
carandraug
9
¿Alguna vez el creador de alguna herramienta de programación ha sido responsable de un error?
Martin Beckett el
66
@carandraug: ah al diablo con eso. La corrección es más importante que todo eso :)
Rody Oldenhuis
79

Un enlace más completo a la lista de diferencias se encuentra en las preguntas frecuentes de Octave . En teoría, todo el código que se ejecuta en Matlab debería ejecutarse en Octave y los desarrolladores de Octave tratan la incompatibilidad con Matlab como errores. Entonces la respuesta a su primera pregunta es sí en teoría. Por supuesto, todo el software tiene errores, ni Octave ni Matlab (sí, Matlab también) están a salvo de ellos. Puede denunciarlos y alguien intentará solucionarlos.

Octave también tiene características adicionales , la mayoría de ellas son sintaxis adicionales que, en mi opinión, hacen que el código sea más legible y tenga más sentido, especialmente si está acostumbrado a otros lenguajes de programación.

Pero hay más en Octave que solo el costo monetario. Octave es gratis también en el sentido de libertad, es gratis, pero no creo que este sea el lugar para despotricar sobre la libertad del software.

Solo proceso imágenes en Octave y descubro que el paquete de imágenes se adapta a mis necesidades. Sin embargo, no sé cuál será el tuyo. Entonces mi respuesta a si vale la pena el costo es no, pero ciertamente otros estarán en desacuerdo.

carandraug
fuente
23

MATLAB es, ante todo, una oferta comercial. Por lo tanto, todo en MATLAB funciona prácticamente de inmediato. Toda la funcionalidad principal es sólida, y si está trabajando en un proyecto especial, entonces MATLAB probablemente tenga un complemento que pueden venderle que agrega muchos archivos .m específicos de dominio adicionales para usted. No es barato, pero funciona y hará el trabajo sin quejarse.

Octave siempre muestra sus raíces de código abierto, información que quiere ser libre. Es gratis y te recordará que es gratis en cada oportunidad. Está desarrollado por voluntarios que odian Windows con pasión. Por lo tanto, Octave se ejecuta en Windows de mala gana. Es bastante sorprendente que existan tantas funciones de MATLAB como existen.

Pero aquí está el problema. Cada vez que intentas hacer algo más que trivialmente complejo, Octave interrumpe repentinamente formas sutiles y difíciles de entender. ¡Vaya! El controlador de terminal tenía un desbordamiento en algún lugar profundo de la capa OpenGL. No puedes imprimir. ¡Vaya! Las gráficas de figuras hacen cosas extrañas con sus fuentes. Buena suerte descubriendo por qué. ¡Vaya! Existe una dependencia oculta entre Octave y algún otro poco de software libre oscuro, por lo que no se compilará. Buena suerte descubriendo cuál es.

¡Y la respuesta de Octave es oye! ¡Es software libre! Tienes todo el código fuente, ¡puedes arreglar todos esos errores tú mismo! Tal vez si tuviera tiempo y recursos infinitos en mis manos, podría pasar todo mi tiempo arreglando errores en el software libre, pero personalmente no. Si trabajara en la academia, podría.

Entonces, en el fondo, la cuestión de si elegir MATLAB u Octave se reduce a una pregunta. Curiosamente, esa pregunta es siempre la misma, cuando se elige entre variantes de software comerciales o libres.

Y la pregunta es:

¿Tienes más dinero que tiempo?

johnwbyrd
fuente
2
Otra pregunta es: ¿qué utilizan las empresas en las que podría terminar trabajando? Probablemente Matlab por las mismas razones.
user276648
14

Octave es básicamente una versión de código abierto de MATLAB. Fue escrito para ser solo eso. MATLAB tiene una GUI muy agradable que hace que sea un poco más fácil de usar, pero la próxima versión estable de OCTAVE también tendrá una GUI, que he probado en la versión inestable, y se ve fantástica. Octave es mucho más defectuoso porque fue desarrollado y mantenido por un grupo de voluntarios, donde el desarrollo de MATLAB es financiado por millones de dólares por industria. Todavía soy estudiante y estoy usando una versión para estudiantes de MATLAB, pero estoy pensando en ir a Octave una vez que se lance la versión estable con la GUI.

MATLAB es probablemente mucho más poderoso que Octave, y los algoritmos se ejecutan más rápido, pero para la mayoría de las aplicaciones, Octave es más que adecuado y, en mi opinión, es una herramienta increíble que es completamente gratuita, donde Octave es completamente gratis.

Yo diría que use MATLAB mientras puede usar la versión académica, pero el cambio a Octave debería ser perfecto ya que usan exactamente la misma sintaxis.

Por último, está el problema de SIMULINK. Si desea hacer un diseño de sistema de simulación o control (probablemente hay un millón de otros usos) SIMULINK es fantástico y viene con MATLAB. No creo que ningún otro se acerque a esto, aunque Scilab es aparentemente una "buena" alternativa de código abierto, no lo he probado.

Paz.

Jonny
fuente
"... porque fue desarrollado y mantenido por un grupo de voluntarios, donde el desarrollo de MATLAB es financiado por millones de dólares por la industria". La cantidad de dinero en un proyecto no es la causalidad de la calidad y la ausencia de errores. Tal vez ni siquiera sea una correlación.
gagarine
"usan exactamente la misma sintaxis" No, no lo hacen.
Cris Luengo
8

Acabo de empezar a usar Octave. Y he visto a personas usar Matlab. Y una diferencia importante como se mencionó anteriormente es que Octave tiene una interfaz de línea de comando y Matlab tiene una GUI. Según yo, tener una GUI es muy bueno para la depuración. En Ocatve, debe ejecutar comandos para ver cuál es la longitud de una matriz, etc., pero en Matlab muestra todo muy bien utilizando una buena interfaz. Pero Octave es gratis y bueno para las tareas básicas que hago. Si está seguro de que va a hacer solo cosas básicas o no está seguro de lo que necesita en este momento, vaya a Octave. Puedes pagar el Matlab cuando realmente sientas la necesidad.

sachinr
fuente
2
Octave tiene una GUI que se encuentra actualmente en versión beta. Use el comando --force-gui cuando ejecute octava.
ig343
66
... y a partir de Octave versión 4, GUI es la IU predeterminada.
Ruslan
7

Lo que hace que Matlab sea tan popular y especial son sus excelentes cajas de herramientas en diferentes disciplinas. Como su objetivo principal es aprender Matlab, ¡no hay nada diferente si trabaja con Octave o Matlab!

¡Simplemente ir y comprar Matlab sin ninguna caja de herramientas genial (que básicamente depende de tu especialidad) no es realmente un gasto razonable!

Definitivamente puedes comenzar bien con Octave y seguir toneladas de tutoriales en Matlab en Internet.

usuario702846
fuente
4

No hay mucho que quisiera agregar a la respuesta de Rody Oldenhuis. Normalmente sigo la estrategia de que todas las funciones que escribo deben ejecutarse en Matlab.

Algunas funciones específicas que pruebo en ambos sistemas, para los siguientes casos de uso:

a) octava no necesita un servidor de licencias, por ejemplo, si su institución no admite licencias locales. Lo usé una vez en una situación en la que el sistema en el que utilicé un script no tenía conexión a Internet e iba a funcionar durante mucho tiempo (en una esquina del laboratorio) y lo usaban muchos usuarios diferentes. Observación: no se trata del costo de la licencia, sino de los problemas técnicos relacionados.

b) Octave es compatible con otras plataformas, por ejemplo, Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ), que puede ser útil.

Alexander Kemp
fuente
3

Las funciones anidadas y los cierres ahora son compatibles con muchos idiomas, incluido MATLAB. JavaScript promueve los cierres como un principio de diseño de primera clase.

Lamentablemente, Octave no admite cierres (funciones anidadas con alcance léxico).

Según http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html , incluso se podría tener la impresión de que los desarrolladores no quieren o no pueden hacerlo bien.

Esto romperá mucho código, en ambos sentidos. Sin solución alternativa.

Wolfgang Kuehn
fuente
Ya no estoy seguro de que esto sea exacto. Las funciones anidadas se implementan en Octave, y he descubierto que son más versátiles que las de Matlab: por ejemplo, poder declarar funciones (que no sean lambdas) dentro de un script, lo que no fue posible con Matlab la última vez que lo probé.
MayeulC
@MayeulC La parte más versátil en realidad corta en ambos sentidos.
Wolfgang Kuehn
0

Octave y matlab tienen muchas similitudes. Pero Octave es una interfaz de línea de comandos. Debe escribir cada comando en el símbolo del sistema, mientras que matlab viene con la mejor GUI. Recomiendo primero usar la versión para estudiantes matlab; Después de aprender las lecciones básicas, use octava gnu periódicamente. Ahora gnu octave viene con gui, pero ahora es una versión de desarrollo. Hay algunos front-end de interfaz gráfica de usuario para octava gnu, como guioctave, xoctave (no libre), DomainMath IDE, etc.

vinu kn
fuente
2
La versión de desarrollo de octave (3.7.5 será) viene con una interfaz gráfica de usuario nativa, ¡que se ve bastante bien!
kjetil b halvorsen