¿Es posible usar Octave para aprender la programación de MATLAB?

23

Quiero aprender la programación de MATLAB para poder realizar algunas investigaciones / análisis por mi cuenta y también, para poder estudiar / modificar algunos scripts de MATLAB que he encontrado en línea, etc.

Sin embargo, el problema es que no puedo pagar MATLAB. GNU Octave, por lo que he escuchado, es bastante compatible con MATLAB. Sin embargo, el desafío con Octave es que la documentación es muy escasa.

Entonces, MATLAB, por un lado, es prohibitivamente costoso (-ve), pero tiene mucha buena documentación, tutoriales y scripts en línea (+), mientras que Octave es gratis (como en la cerveza), aunque (comprensiblemente) carece de documentación exhaustiva, etc. .

Estoy pensando en descargar e instalar Octave, pero usar la documentación (y los scripts) de MATLAB para ayudarme a comenzar. Soy consciente de que existen algunas diferencias entre Octave y MATLAB; lo que estoy tratando de resolver es si las diferencias son lo suficientemente grandes como para frustrar mis esfuerzos por "aprender MATLAB utilizando Octave" (efectivamente).

Cualquier retroalimentación constructiva bienvenida.

Homunculus Reticulli
fuente
3
Bienvenido Homúnculo. Tenemos menos de dos meses y todavía no tenemos muchas etiquetas. He agregado la etiqueta de octava para ti.
David Ketcheson el
Otra opción, si su objetivo es utilizar un software computacional para su uso personal, es Mathematica. La versión completa completa está disponible para uso personal por menos de $ 300. No sé si esto está dentro de su presupuesto o no. Pero por lo que uno obtiene por esto (la misma versión que la versión comercial completa), creo que vale la pena. nota: si eres estudiante, entonces Matlab y Mathematica también están disponibles para estudiantes por el mismo precio.
Nasser
1
En una palabra, si. Las diferencias entre los idiomas son bastante pequeñas. La documentación para Matlab está disponible de forma gratuita en Internet en Mathworks.com (los creadores de Matlab). Lo principal que echará de menos es la GUI de Matlab. Una buena GUI para Octave es difícil de encontrar. La versión de desarrollo de Octave tiene una GUI pero es difícil de instalar. Instalé QtOctave, que obtuve en outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Funciona bien, excepto que siempre hay un mensaje de error al inicio, y no puedo terminar un proceso sin matar por completo a Octave. Yo uso Notepad ++ ...
Stefan Smith
... en lugar del editor de QtOctave, y parece funcionar mejor. Otra cosa, las diferencias entre Octave y Matlab, tal como están, están ampliamente documentadas en sitios web gratuitos.
Stefan Smith
Como no tengo suficiente reputación para comentar, me gustaría agregar que una declaración en la respuesta aceptada: "Por supuesto, hay características de MATLAB (particularmente en las cajas de herramientas, pero Octave no las tiene)" es completamente incorrecto. Octave tiene un amplio conjunto de paquetes en Octave-forge que incluyen todas las funciones de paquetes de Matlab que he necesitado (trabajo en el procesamiento y la optimización de imágenes para imágenes médicas, y necesito bastantes cajas de herramientas / paquetes). Además, la respuesta aceptada no aborda un problema importante, que es que ningún código que el interlocutor escriba podrá ser utilizado por laboratorios o por particulares
Barnhillec

Respuestas:

24

Descargo de responsabilidad: a veces me molesto cuando alguien trata de decirme qué creen que debo hacer en lugar de responder la pregunta que hice. Pero me arriesgaré y sugeriré una alternativa para usted.

Sugeriría mirar los paquetes de computación científica de Python: numpy , matplotlib y scipy . Juntos, le brindan la mayor parte de la funcionalidad principal de MATLAB (en algunos casos le brindan más que MATLAB). Son gratuitos y de código abierto, y hoy en día pueden tener una base de usuarios más amplia que Octave. Gran parte de la infraestructura informática científica en Python es compatible con Enthought Inc. , y le recomendaría que instale su Distribución Enthought Python gratuita , que incluye los tres paquetes que mencioné y más.

Por supuesto, hay características de MATLAB (particularmente en las cajas de herramientas, pero Octave no las tiene) que Python carece. Pero utilizo Python en combinación con lenguajes de nivel inferior para la mayor parte de mi trabajo, y me permite programar en un lenguaje casi tan conveniente como MATLAB, interactuar con una gran cantidad de paquetes útiles que MATLAB no tiene y ejecutar el mismo código fácil de leer en una supercomputadora.

Editar : también puede probar la distribución Anaconda Python de Continuum Analytics. Hay una versión gratuita que incluye todos los paquetes anteriores y mucho más.

David Ketcheson
fuente
77
Depende de si Homunculus quiere aprender MATLAB porque específicamente necesitan aprender MATLAB (por ejemplo, para un trabajo), o si quieren aprender MATLAB para hacer computación científica, en cuyo caso Python puede ser una mejor opción dadas las limitaciones financieras.
Geoff Oxberry
3
@DavidKetcheson: en realidad estoy usando numpy y matplotlib (ya que estoy familiarizado con Python). Sin embargo, sigo encontrando muchos códigos MATLAB, por lo que me gustaría poder aprender de los scripts MATLAB disponibles, etc. (sin tener que pagar la tarifa de licencia). Además, siempre es bueno tener la programación de MATLAB como una pluma extra en mi gorra, por eso estaba pensando en aprender MATLAB a través de la puerta trasera (usando Octave).
Homunculus Reticulli
+1 para Python aquí, también es un lenguaje de programación real :) Aunque debo decir que comencé aprendiendo MATLAB.
boyfarrell
Octave es un clon de Matlab con licencia gratuita. Su sintaxis de lenguaje es casi totalmente compatible. Python resuelve un problema muy diferente al de Matlab y Octave. Su sintaxis es mucho más complicada y detallada porque el lenguaje es más versátil. Para la creación de prototipos de sistemas lineales, usaría Matlab u Octave, luego, para implementar un software listo para la producción, migraría a python / Java. Antes de cambiar de Matlab a Python o R, debe comprender en qué se está metiendo.
FistOfFury
@FistOfFury Yo uso Python3 puro para sistemas lineales. Para el software listo para la producción, generalmente elige C / Fortran o embebido.
percusse
17

GNU Octave es "principalmente compatible con Matlab", ciertas sutilezas significan que no todos los scripts son portátiles desde MATLAB a Octave.

Vale la pena leer la documentación del idioma y / o las notas de compatibilidad en las preguntas frecuentes o en wikilibros . También hay notas de portabilidad .

Existen paquetes similares a las cajas de herramientas de MATLAB, pero deberá verificarlos para determinar cuán similares son. También hay intentos de scripts de conversión que se encargan de las diferencias entre los dos idiomas, pero que yo sepa, ninguno es perfecto.

Gareth A. Lloyd
fuente
12

Sí, puedes aprender MATLAB a través de Octave. Pero la sintaxis de Octave es menos restrictiva y más acorde con los lenguajes de script modernos. MATLAB parece atrasado a este respecto. Ver este enlace wiki Programación MATLAB / Diferencias entre Octave y MATLAB

Otra gran diferencia para mí fue la disponibilidad de ciertas bibliotecas para MATLAB pero no para Octave.

Cola de aprendiz
fuente
9

Para aprender en general la programación en lenguaje M y cómo funciona MATLAB, sí, Octave está bien. Sin embargo, si necesita una caja de herramientas en particular como parte de su trabajo y nadie ha implementado una versión gratuita, entonces no tiene suerte.

Una edición para estudiantes de MATLAB no es tan cara. Si estás en una universidad, incluso es posible que tengan una licencia de sitio. Deberías considerar ambas posibilidades.

Bill Barth
fuente
7

He usado Octave y MATLAB indistintamente en los mismos códigos en el pasado; No he tenido problemas con la compatibilidad. Las principales diferencias hasta donde puedo decir son:

  1. MATLAB puede compilarse en bytes y es un poco más rápido.
  2. Octave puede usar cualquiera #o %para comentarios, Matlab solo usa%
  3. Octave produce parcelas mucho mejores.
Dan
fuente
1
Me interesaría saber, en qué aspecto Octave produce tramas mucho mejores (no es que me gusten particularmente las tramas de MATLAB ...).
Dirk
Octave usa gnuplot como backend. Puede ser que me guste que el gnuplot se vea más. Lo único en lo que puedo pensar es que no tengo que hacer nada especial para obtener antialiasing; Se habilita automáticamente.
Dan
1
Mi experiencia con el trazado de Octave ha sido mixta, y después de aprender una o dos cosas con MATLAB, la calidad de los gráficos que obtengo ahora es muy buena. ¿Quizás tenga algunos ejemplos en los que Octave supera a Matab por esto? Aso, byte-compilado? ¿Estás hablando del codificador MATLAB? No puede simplemente ingresar código MATLAB arbitrario en esa herramienta, y si recuerdo que también es una herramienta bastante costosa, ciertamente no está disponible en una versión con licencia para estudiantes.
Reid.Atcheson
Vaya, veo lo que quieres decir para la compilación. Mi culpa.
Reid.Atcheson
Lo siento, pero ¿qué significa que Matlab pueda compilarse en bytes?
user17915
6

De hecho, es posible, especialmente si utiliza una GUI, como GUIOctave . Otro lenguaje que puede resultarle útil porque se han escrito muchos paquetes para él es R. También hay una GUI para el lenguaje R, llamada RStudio, y un documento de traducción entre R y MatLab .

Jean-Victor Côté
fuente
5

Con respecto a su pregunta:
Yo diría que sí. Simplemente porque los paradigmas y principios son los mismos. Las diferencias en la sintaxis son despreciables y pueden resumirse en una hoja de trucos (en caso de que esté trabajando principalmente con MATLAB algún día).


Otra sugerencia para una alternativa:
como alternativa de MATLAB, estoy usando SciLab . Es gratis como Octave, tiene una comunidad decente que brinda ayuda y soporte y su documentación es bastante buena. La documentación integrada y la ayuda para las funciones es similar a la de MATLAB. (Lo que más me gusta es la capacidad de ejecutar los ejemplos con un solo clic). La sintaxis es similar a MATLAB también.

Con respecto a las similitudes y diferencias entre SciLab y MATLAB, este documento puede ser de su interés: Introducción a Scilab desde el punto de vista de un usuario de Matlab, Eike Rietsch, mayo de 2010 (PDF) .

Otra ventaja para SciLab sobre MATLAB: el inicio y la GUI es mucho más rápido. No he probado Octave todavía.

Torbjörn
fuente
1
No soy un fanático de Scilab, mi primera impresión fue que había muchas pequeñas diferencias en la sintaxis y las funciones básicas (en relación con Matlab), pero ninguna de las increíbles que Python tiene para compensar la incompatibilidad.
mdaoust
Hm ... según tu comentario y la respuesta de David Ketcheson, parece que realmente vale la pena probar Python.
Torbjörn
5

Ejemplo práctico:

Uso MATLAB en el trabajo y tomé la clase de aprendizaje automático en línea de Stanford el semestre pasado.

Hice toda la tarea en octava.

Solo noté 2 diferencias (solo estaba usando la funcionalidad principal):

  • Octave es un poco más flexible sobre qué tipos de expresiones pueden indexarse. Entonces, si aprovecha eso, su código no será portátil.
  • En mi instalación, los gráficos pcolor () e image () no funcionan para arreglos de tamaño razonable, como 1000x1000, los pequeños, como 50x50, funcionan bien.
mdaoust
fuente
5

Hay algunas diferencias sutiles en la interpretación de Octave del lenguaje de programación de MATLAB. Octave usa " endif" y " endwhile" para cerrar ify whiledeclaraciones respectivamente. Octave también le permite declarar funciones en la línea de comando. Sin embargo, también debe analizar todo lo que MATLAB analiza, por lo que si se apega al lenguaje de programación de MATLAB, debería estar bien.

Tenga en cuenta que las mayores diferencias entre los dos programas están en las funciones integradas que realizan la mayor parte del trabajo pesado numérico, por ejemplo, " quad", " ode15s" y demás. Sin embargo, todas estas funciones deben estar bien documentadas cuando se utiliza el helpcomando " ". También hay listas de correo para Octave si tiene preguntas más específicas que no están cubiertas por la ayuda en línea.

Pedro
fuente
3
Octave está más que feliz de aceptar el "fin" para el final de ambos bucles while y iftemtents.
Bill Barth
4

Sí, absolutamente puedes, lo hice. Sin embargo, gran parte del poder de MATLAB viene con algunas de sus cajas de herramientas y componentes enormemente fáciles de usar que pueden tener o no equivalentes en Octave.

También tenga en cuenta que, si bien los idiomas base son compatibles (a excepción de las nuevas funciones OO en MATLAB), Octave tiene algunas 'adiciones' a la sintaxis, como poder usar "! =" Para NEQ, y también tiene algunas comportamientos predeterminados alternativos, como cómo analiza las funciones en línea. Estas son cosas menores que harán que el código Octave no se ejecute en MATLAB de inmediato, a menos que haya tenido cuidado de evitar confiar en ese comportamiento.

También MATLAB es un entorno informático completo, y no solo un lenguaje que interactúa con rutinas de álgebra lineal optimizadas. Entonces, lo que aprendas de Octave solo llegará hasta cierto punto. Serás funcional en MATLAB si eres competente con Octave, pero no serás tan productivo con MATLAB como podrías serlo.

Reid.Atcheson
fuente
2

El mejor lenguaje gratuito que tiene una sintaxis similar a MATLAB es Julia. También es más rápido y tiene un sistema de paquetes más extenso (entre otras razones por las que es mejor ...), pero la sintaxis de álgebra lineal es casi exactamente la misma (muchos algoritmos que puede traducir a MATLAB cambiando A[i]para indexar A(i)). Creo que es el mejor idioma para aprender en este momento, y "accidentalmente conocerá MATLAB" con solo usarlo.

Chris Rackauckas
fuente
0

Sí, puedes aprender Matlab usando Octave. Por supuesto que hay algunas limitaciones.

Octave y Matlab comparten gran parte de su sintaxis. Los dos son intercambiables a ese respecto. La experiencia en Matlab es más rica y fácil de usar, especialmente cuando se trabaja con gráficos, aunque Octave tiene una nueva interfaz gráfica de usuario (GUI) que está en versión beta. Es probable que los dos sistemas converjan aún más a medida que mejore el entorno gráfico para Octave.

Hay muchos cursos gratuitos en Coursera que le otorgan una licencia de estudiante temporal gratuita de Matlab para la duración del curso. Busca cursos de aprendizaje automático.

Puño de la furia
fuente