En nuestra pequeña operación, necesitamos crear un prototipo de algoritmos en algún lenguaje de nivel superior antes de comprometernos con una implementación de C en hardware integrado.
Hasta ahora hemos estado usando MATLAB para hacer eso, pero los costos de licencia están comenzando a doler. Estamos considerando portar nuestro código MATLAB a Octave.
¿Hay alguna razón en particular para no hacer eso? ¿Romperemos alguna compatibilidad, especialmente si tenemos socios externos que insisten en usar MATLAB? ¿Hay alguna penalización de desempeño que podamos esperar?
Respuestas:
En 2008 intenté hacer lo mismo. Rápidamente noté los siguientes tapones de espectáculos:
Pero debo decir que en general me impresionó lo compatible que es Octave con Matlab, si su uso de Matlab es básico, puede tener suerte. Finalmente esto fue en 2008, en dos años las cosas pueden cambiar mucho.
fuente
Justo al lado de la parte superior de mi cabeza:
fuente
También he probado octava y R.
Con respecto a la octava: me impresionó mucho la similitud de la sintaxis de la octava. No me tomó mucho tiempo transportar mis scripts de MATLAB a una octava. Mientras tanto, tengo un problema particular al imprimir marcadores junto con la barra de error que fue solucionado por Jarno Rajahalme en nabble y para cambiar el tamaño de fuente xtick, solución que obtuve en una respuesta a la pregunta en nabble. Por lo tanto, todavía tiene algunos errores que con un poco de esfuerzo se pueden superar. Si tiene algún problema, puede probar el foro de correo nabble: [email protected]. Por cierto, mi equipo no puede adaptarse (fácil de usar) a él, ya que se adaptan a MATLAB, por lo que todavía estamos usando MATLAB. Dado que MATLAB está construido bajo gnuplot, otra forma de corregir sus errores es editar el archivo gnuplot generado. El mejor IDE que encontré fue QtOctave, que hice una breve reseña en "
Respecto a R: según una investigación realizada por SciViews, el rendimiento de R es superior a MATLAB y octava. No tengo mucha experiencia con R. Estudié el paquete mclust para escribir un capítulo de wikilibro sobre EM Clustering en R. Por cierto, parecen tener una comunidad muy activa. Por lo tanto, puede encontrar paquetes de terceros para propuestas, que no están tan estandarizados en la OMI. El mejor IDE que encontré fue el complemento StatET para eclipse, JGR (Java GUI para R) y emacs. A pesar del tiempo que cuesta aprender un nuevo lenguaje de programación, si eligiera una plataforma de código abierto para hacer los gráficos de mi experimento y algunos análisis de minería de datos, probaría R.
fuente
Octave tiene varias mejoras sintácticas en matlab, por ejemplo, puede decir
endif
endfor
y enendfunction
lugar de soloend
, lo que facilita la depuración.Octave también le permite generar funciones dinámicamente y tener múltiples funciones definidas en scripts y archivos de funciones. Lo cual es mucho mejor que el enfoque de un solo archivo y una función de matlab.
Finalmente, octave tiene
parcellfun
ypararrayfun
son herramientas de procesamiento paralelo muy poderosas de las que matlab carece por completo. Hay unparfor
in matlab, pero en mi opinión no es la mejor manera de hacerlo.Las desventajas de la octava son que están ligeramente atrasados en las cajas de herramientas, aunque si miras puedes encontrar cosas similares.
fsolve
ylsode
parece un poco más lento, pero más robusto, en octava por alguna razón. También un gran fastidio para algunas personas tiende a ser la falta de enlace simbólico y la caja de herramientas DAQ, pero esas cosas van a ser propietarias de todos modos.Python / Numpy definitivamente vale la pena: es más poderoso pero su sintaxis está dirigida a piezas de código más complejas.
fuente
failed to open pipe: pipe: not supported on this system
. Estoy usando los binarios de Windows prediseñadosOctave_3.6.1_VS2010
.octave --force-gui
Octave no tiene
guide
, lo que hace que la creación de GUI sea muy fácil. Utilizo regularmente la guía para crear herramientas para mis colegas que no utilizan MATLAB.fuente
Para su caso de uso, la octava puede ser superior a MATLAB:
Tiene una sintaxis que le permitirá escribir código un poco más cercano a C. es decir, + =, - =, valores de parámetros de función predeterminados, literales de cadena entre comillas dobles, etc.
Suponiendo que sus chips sean más lentos que un procesador de escritorio, es probable que la velocidad no sea un problema.
Dado que se inicia mucho más rápido que matlab, es más práctico integrarlo en scripts de shell para realizar pruebas.
Para la creación de prototipos, el trazado es más que adecuado; la gente está acostumbrada al estilo de MATLAB.
La relativa falta de cajas de herramientas no es un gran problema, ya que de todos modos no estarían disponibles en su plataforma de destino.
Utilizo ambos, y cada vez que cambio, echo de menos funciones del otro.
fuente
Es interesante ver cómo funciona la alternativa de código abierto para las estadísticas pero no para el análisis numérico. R (la octava de las estadísticas) es hoy en día mucho más popular que el comercial S-plus (el matlab de las estadísticas). Los problemas mencionados como razones para no cambiar de matlab que se encuentran en las otras respuestas también se aplicaron a R. Pero aún así, todos comenzaron a contribuir y ahora R es el estándar, con mejores gráficos, mejores paquetes y no más dependencia del proveedor.
Así que también podrías preferir la octava sobre el matlab, si puedes superar el dilema de los prisioneros.
fuente
Hay un buen WikiBook en MATLAB con una lista de diferencias entre MATLAB y Octave .
En mi experiencia, el núcleo de MATLAB está bien adaptado a Octave, pero las cajas de herramientas tienen distintos niveles de compatibilidad, por lo que su decisión depende de lo que esté intentando codificar exactamente.
Algunas cosas de las que Octave carece, AFAIK, son la estrecha integración con el código .NET y el constructor de interfaz
guide
gráfica de usuario (aunque hay muchas otras herramientas de generación de interfaz gráfica de usuario que Octave puede usar).Además, como han señalado otros, gran parte de lo que paga con MATLAB es la interfaz elegante y las herramientas de depuración / creación de perfiles. Los programadores experimentados probablemente puedan manejar las alternativas, pero los novatos pueden tener dificultades.
fuente
Tenga en cuenta que Octave admite construcciones de lenguaje que no están presentes en Matlab (p. Ej., Operadores de incremento automático, declaraciones hasta el final, etc.). Esto hace que a veces sea molesto portar el código desarrollado (por alguien que no esté familiarizado con las limitaciones de Matlab) en Octave a un entorno Matlab.
Hay algunas otras limitaciones / diferencias en Octave FAQ .
fuente
Definitivamente debería preferir Matlab a Octave si puede pagarlo.
No tengo mucha experiencia con Octave, pero esperaría problemas si su código usa cajas de herramientas de Matlab, gráficos sofisticados o interfaz gráfica de usuario de Matlab.
Esperaría que fuera como OpenOffice vs. MS Office. Mayormente compatible, pero lo suficientemente diferente como para causarle dolor de cabeza.
fuente
He portado con éxito algunas aplicaciones de regresión lineal y programación cuadrática a Octave.
La regresión lineal (operador de barra invertida) funcionó sin ningún ajuste. En el caso de la programación cuadrática, tuve que cambiar de fmincon () a sqp () , dando resultados similares.
Aún así, las cajas de herramientas y la GUI en Octave son, de hecho, menos maduras (pasé mucho tiempo en cosas básicas), aunque ha progresado rápidamente en los últimos dos años.
fuente