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.
Respuestas:
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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:
#
o%
para comentarios, Matlab solo usa%
fuente
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 .
fuente
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.
fuente
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):
fuente
Hay algunas diferencias sutiles en la interpretación de Octave del lenguaje de programación de MATLAB. Octave usa "
endif
" y "endwhile
" para cerrarif
ywhile
declaraciones 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 elhelp
comando " ". 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.fuente
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.
fuente
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 indexarA(i)
). Creo que es el mejor idioma para aprender en este momento, y "accidentalmente conocerá MATLAB" con solo usarlo.fuente
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.
fuente