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.
Respuestas:
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:
¿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 :)
fuente
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.
fuente
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?
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente