Diferencias entre Octave y MATLAB [cerrado]

Resuelto lswim asked hace 12 años • 9 respuestas

Soy un programador que conoce Python , Ruby y algo de C y está tratando de decidir si aprender GNU Octave o MATLAB . Sé que tienen mucho en común. , pero no me queda claro qué tan similar es la sintaxis o incluso las estructuras de datos. El enlace de arriba 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 computación más científica, posiblemente usando algunas bibliotecas de análisis de imágenes.

Además, ¿vale la pena el coste de MATLAB?

lswim avatar Aug 23 '12 10:08 lswim
Aceptado

En lugar de brindarle una lista completa de diferencias, le daré mi opinión al respecto.

Si lee atentamente la página wiki que proporciona, a menudo verá frases 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 por completo su propósito. La idea detrás de Octave es (o se ha convertido , debería decir, vea los comentarios a continuación) tener una alternativa de código abierto para ejecutar código m. Si intenta ser "mejor", intenta ser diferente , lo que no coincide con las razones por las que la mayoría de la gente lo utiliza. En mi experiencia, ejecutar cosas desarrolladas en MATLAB nunca funciona de una sola vez, excepto las cosas realmente simples y muy cortas. Para cualquier función importante, siempre tengo que traducir muchas cosas antes de que funcione en Octave, si No reescribirlo desde cero. Cómo esto es mejor , realmente no lo veo...

Además, si aprende Octave, se permite mucha sintaxis 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, está 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 ), 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 comunidad y una base de usuarios mucho más grandes, etc., etc., etc. MATLAB es sólo una pequeña parte de algo mucho más grande. Octava es... sólo Octava.

Entonces, mi consejo:

  • Descubra si su escuela pagará por MATLAB. A menudo lo harán.
  • Si no es así, y si puede juntar el dinero, compre MATLAB y aprenda a usarlo correctamente. A la larga es la mejor decisión.
  • Si realmente no puede conseguir el dinero, utilice 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 existen grandes bases de código escritas íntegramente en MATLAB. Hay profesores, ingenieros, estudiantes, codificadores profesionales, muchísima gente que conoce todos los intrincados y sangrientos detalles 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 exigirles a todos que comiencen a hablar inglés a partir de ese momento, simplemente porque no hablas o no te gusta el español. Lo mismo con MATLAB y Octave.

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

Rody Oldenhuis avatar Aug 23 '2012 04:08 Rody Oldenhuis

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 tu primera pregunta es sí en teoría. Por supuesto, todo software tiene fallos, ni Octave ni Matlab (sí, Matlab también) están a salvo de ellos. Puedes denunciarlos y alguien intentará solucionarlos.

Octave también tiene características adicionales , la mayoría de ellas son sintaxis adicional que, en mi opinión, hace 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 Octave es mucho más que sólo el coste 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.

Proceso imágenes únicamente en Octave y encuentro que el paquete de imágenes se adapta a mis necesidades. No sé, sin embargo, cuál será el tuyo. Así que mi respuesta a si vale la pena el costo es no, pero ciertamente otros no estarán de acuerdo.

carandraug avatar Aug 23 '2012 03:08 carandraug

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

Octave siempre muestra sus raíces de código abierto y de información libre. Es gratis y le 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 a regañadientes. Es bastante sorprendente que existan tantas características de MATLAB.

Pero aquí está el problema. Cada vez que intentas hacer algo más que trivialmente complejo, Octave de repente se rompe de manera sutil y difícil de entender. Vaya, el controlador del terminal tenía un desbordamiento en algún lugar profundo de la capa OpenGL. No puedes imprimir. Vaya, las tramas de figuras hacen cosas extrañas con sus fuentes. Buena suerte para descubrir por qué. Vaya, hay una dependencia oculta entre Octave y algún otro software libre poco conocido, por lo que no se compila. Buena suerte para descubrir cuál es.

Y la respuesta de Octave es ¡oye! ¡Es software gratuito! ¡Tienes todo el código fuente y puedes corregir todos esos errores tú mismo! Tal vez si tuviera tiempo y recursos infinitos en mis manos, podría dedicar todo mi tiempo a corregir errores en el software libre, pero personalmente no lo hago. Si trabajara en el mundo académico, podría hacerlo.

Entonces, en esencia, la cuestión de elegir MATLAB u Octave se reduce a una pregunta. Curiosamente, esa pregunta es siempre la misma al elegir entre variantes de software comercial o libre.

Y la pregunta es:

¿Tienes más dinero que tiempo?

johnwbyrd avatar Dec 22 '2015 21:12 johnwbyrd