Diferencias entre Octave y MATLAB? [cerrado]


Soy un programador que conoce Python, Ruby y algún C que está tratando de decidir si aprender GNU Octave o Matlab. Sé que tienen mucho en común, pero no está claro qué tan similar es la sintaxis o incluso las estructuras de datos son. Todo el mundo dice que son "similares", pero nadie dice lo similares que son en realidad. El enlace anterior muestra varios ejemplos donde son sintácticamente similares o idénticos, ¿es esto cierto para todo el lenguaje?

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

Además, ¿Matlab vale la pena el costo? 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.

 234
Author: HaveNoDisplayName, 2012-08-23

9 answers

En lugar de proporcionarles una lista completa de diferencias, les daré mi opinión sobre el asunto.

Si lee cuidadosamente la página wiki que proporciona, a menudo verá oraciones como "Octave admite ambos, mientras que MATLAB requiere el primero", 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 en , debo decir, ver comentarios a continuación) para tener una alternativa de código abierto para ejecutar m-code. Si intenta ser" mejor", por lo tanto intenta ser diferente, lo que 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 , realmente cortas For Para cualquier función considerable, siempre tengo que traducir muchas cosas antes de que funcione en octava, si no reescribirlo desde cero. Cómo esto es mejor , realmente no veo...

También, si aprendes Octave, hay una gran cantidad de sintaxis permitida en Octave que no está permitida en MATLAB. Significado code el código escrito en octava 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 que realmente no hay equivalente en Octava (sí, tendría que pagar por todo eso. Pero a menudo su el empleador / escuela hace eso de todos modos, y bueno, al menos existe), cumplimiento comprobado con varios estándares de la industria, herramientas de prueba, herramientas de validación, sistemas de gestión de requisitos, generación de informes, una comunidad mucho más grande y base de usuarios, etc. sucesivamente. sucesivamente. MATLAB es solo una pequeña parte de algo mucho más grande. Octave es...sólo octava.

Entonces, mi consejo:

  • Averigüe si su escuela pagará por MATLAB. A menudo lo harán.
  • Si no lo hacen, y si puedes raspar el dinero, comprar MATLAB y aprender a usarlo correctamente. A la larga, es la mejor decisión.
  • Si realmente no puede obtener el dinero use use Octave, pero aprenda la sintaxis de MATLAB y manténgase alejado de la sintaxis de solo octava.

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

Si consigues un nuevo trabajo, y todos en tu nueva oficina hablan español, es un poco arrogante exigir a todos que empiecen a hablar inglés a partir de entonces, simplemente porque no hablas/te gusta el español. Lo mismo con MATLAB y Octave.

NB } si todos los downvoters pudieran dejar un comentario con sus argumentos y razones para estar en desacuerdo conmigo, eso sería genial:)

 208
Author: Rody Oldenhuis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-27 05:30:43

Un enlace más completo a la lista de diferencias está en el FAQ de la octava. En teoría, todo el código que se ejecuta en Matlab debe ejecutarse en Octave y los desarrolladores de Octave tratan la incompatibilidad con Matlab como errores. Así que la respuesta a tu 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. Puedes reportarlos y alguien intentará arreglarlos

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

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

Hago procesamiento de imágenes solo en octava y encuentro que el paquete de imagen se adapta a mis necesidades. No se, sin embargo, cual será el tuyo. Así que mi respuesta a si vale la pena el costo es no, pero ciertamente otros no estarán de acuerdo.

 71
Author: carandraug,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-23 03:56:49

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

Octave siempre muestra sus raíces de código abierto e información que quiere ser libre. Es gratis, y te recordará que es gratis en cada oportunidad. Está desarrollado por voluntarios que odian las Ventanas con pasión. Por lo tanto Octave se ejecuta en Windows a regañadientes. Es bastante sorprendente que existan tantas características de MATLAB como lo hacen.

Pero aquí está el problema. Cada vez que intentas hacer algo más que trivialmente complejo, Octave de repente se rompe en formas sutiles y difíciles de entender. Oops the el controlador de terminal tenía un desbordamiento en alguna parte profunda de la capa de OpenGL. No puedes imprimir. Oops the las gráficas de figuras hacen cosas extrañas con sus fuentes. Buena suerte averiguando por qué. Oops there hay cierta dependencia oculta entre Octave y algún otro poco oscuro de software libre, por lo que no se compilará. Buena suerte averiguando cuál es.

Y la respuesta de octava es hey! 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 Si trabajara en la academia, podría.

Así que en el núcleo, la cuestión de si elegir MATLAB o Octave se reduce a una pregunta. Curiosamente, esa pregunta es siempre la misma, al elegir entre variantes comerciales vs. software libre.

Y la pregunta es:

¿Tienes más dinero que tiempo?

 16
Author: johnwbyrd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-23 21:33:30

Octave es básicamente una versión de código abierto de MATLAB. Fue escrito para ser justo 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 buggy porque fue desarrollado y mantenido por un grupo de voluntarios, donde el desarrollo de MATLAB está financiado por millones de dólares por la industria. Todavía soy un estudiante y estoy usando un estudiante versión de MATLAB, pero estoy pensando en pasar a Octave una vez que se lance la versión estable con la GUI.

MATLAB es probablemente mucho más potente 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 es, en mi opinión' una herramienta increíble que es completamente libre, donde Octave es completamente libre.

Yo diría que use MATLAB mientras puede usar la versión académica, pero el cambio a Octava debe ser transparente, ya que usan la versión exacta la misma sintaxis.

Por último, está el tema de SIMULINK. Si desea hacer simulación o diseño de sistemas de control (probablemente haya un millón de otros usos) SIMULINK es fantástico y viene con MATLAB. No creo que ninguna otra se acerque a esto, aunque Scilab es aparentemente una' buena ' alternativa de código abierto, no la he probado.

Paz.

 12
Author: Jonny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-16 07:14:41

Acabo de empezar a usar Octave. Y he visto a la gente usar Matlab. Y una diferencia importante como se mencionó anteriormente es que Octave tiene una interfaz de línea de comandos y Matlab tiene una GUI. Según mí, tener una interfaz gráfica de usuario es muy bueno para la depuración. En Ocatve tienes que ejecutar comandos para ver cuál es la longitud de una matriz, etc, pero en Matlab muestra muy bien todo usando una buena interfaz. Pero Octave es gratis y bueno para las tareas básicas que hago. Si usted está seguro de que usted va a hacer solo básico cosas o no está seguro de lo que necesita en este momento, a continuación, ir a Octave. Puede pagar por el Matlab cuando realmente sienta la necesidad.

 8
Author: sachinr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-27 14:11:30

Lo que hace que Matlab sea tan popular y especial son sus excelentes cajas de herramientas en diferentes disciplinas. Ya que su objetivo principal es aprender Matlab, por lo que no hay diferencia en absoluto si trabaja con Octave o Matlab!

Solo ir y comprar Matlab sin ninguna caja de herramientas genial (que básicamente depende de su mayor) no es realmente un gasto razonable!

Definitivamente puede tener un buen comienzo con Octave y seguir toneladas de tutoriales en Matlab en Internet.

 7
Author: user702846,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-16 07:14:16

No hay mucho que me gustaría añadir a la respuesta de Rody Oldenhuis. Por lo general, 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) octave 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 y se iba a ejecutar durante un tiempo muy mucho tiempo (en una esquina en el laboratorio) y utilizado por muchos usuarios diferentes. Observación: no se trata del costo de la licencia, sino de los problemas técnicos relacionados.

B) Octave soporta otras plataformas, por ejemplo, Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - que puede ser útil.

 4
Author: Alexander Kemp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-16 07:18:01

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

Lamentablemente, Octave no soporta cierres (funciones anidadas con ámbito léxico).

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

Esto romperá mucho código, en ambos sentidos. No transitoria.

 3
Author: Wolfgang Kuehn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-20 10:49:56

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 interfaz gráfica de usuario. Recomiendo primero usar la versión de estudiante de matlab; después de aprender lecciones básicas use gnu octave permentaly. Ahora gnu octave viene con gui, pero ahora es una versión de desarrollo. Hay algunas interfaces gráficas para gnu octave, como guioctave, xoctave (no libre), DomainMath IDE,etc.

 0
Author: vinu k n,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-30 05:15:49