¿Alternativas gratuitas a Matlab que se ejecutan en Linux?

Recientemente me uní a la gente que usa Linux. Como resultado, estoy tratando de reemplazar la mayor cantidad posible de aplicaciones propietarias con alternativas gratuitas y, si es posible, de código abierto.

Dado que necesito una herramienta decente para mis experimentos matemáticos y solía usar MATLAB R2013b en mi instalación anterior de Windows, estoy ansioso por conocer las alternativas gratuitas, preferiblemente de código abierto, a Matlab que se ejecutarán en Linux (Ubuntu).

¿Existen alternativas gratuitas a Matlab que se ejecuten en Linux? Lo que es más importante para mí, es que la alternativa a Matlab debería encajar perfectamente en lo que respecta a la compatibilidad de sintaxis... para que la mayoría de los programas se puedan portar fácilmente (o, si es posible, importar). Además, estoy bastante seguro de que ninguna alternativa tendrá el conjunto completo de funciones que proporciona Matlab, por lo que también sería importante para mí saber qué diferencias en la funcionalidad debo esperar al usar las alternativas que sugiere. Significado: ¿hay algo que las alternativas gratuitas no puedan hacer con MATLAB R2013b y viceversa?

No hay reemplazos completos de funciones de laboratorio de matemáticas. Por lo tanto, espere características faltantes y un peor rendimiento. Y menos bibliotecas.
Matlab tiene muchas características. ¿Qué características usas? ¿Has probado Scilab, que se esfuerza por ser una alternativa gratuita a Matlab?
Esta pregunta no debe reabrirse, porque los requisitos aún son demasiado vagos.
@e-sushi Si está dispuesto a pagar por Matlab en Windows, ¿por qué no usarlo también en Linux?
@Bernhard Para responder a su pregunta , citaré la parte de mi pregunta que parece haberse perdido: "... tratando de reemplazar la mayor cantidad de aplicaciones propietarias que pueda, con alternativas gratuitas, y si es posible de código abierto ..." Creo que eso indica claramente que no estoy dispuesto a pagar por Matlab (más).
@e-sushi No tiene sentido que haya aplicaciones de código abierto que reemplacen las aplicaciones propietarias. Debe incluir una lista de especificaciones de lo que desea.
@Bernhard: "tantos como sea posible" parece un requisito muy claro. ¿Existen realmente tantas alternativas de Matlab para Linux que cubran la mayoría de sus características, que elegir una o dos con la compatibilidad más cercana sea difícil? ¿Puedes nombrar diez programas de este tipo?
@SF. ¿Estás tratando de convencerme de que está usando todas las funciones? No tiene sentido. Podría estar haciendo solo algunas transformaciones de datos y trazando. En ese caso, un convertidor de código Matlab a Python podría ser una respuesta válida. Tantos como sea posible no tiene ningún sentido si está usando solo algunos de ellos.
@Bernhard Un breve aviso amistoso de nuestra sección de ayuda: " ¿Cuándo no debo comentar? ... Discusión secundaria o debatir un punto controvertido; utilice el chat en su lugar;..."
@e-sushi Estás eligiendo las partes equivocadas de mis comentarios. Pido explícitamente tres veces que aclare lo que está buscando exactamente: meta.softwarerecs.stackexchange.com/questions/1/…
@Bernhard: si aún no lo ha notado, esta pregunta ya tiene una respuesta aprobada. Algo que satisfizo al autor de la pregunta. Considerar que alguien, utilizando las pautas dadas, fue capaz de dar una respuesta satisfactoria es una prueba fáctica de que la pregunta fue lo suficientemente clara y no requiere más aclaraciones. ¿Crees que puedes dar una solución mejor que Olli si e-sushi responde a tus preguntas? La compatibilidad general en todo el paquete es una métrica tan válida de la conveniencia de un paquete como cualquier otra, independientemente de lo que piense.
@SF. Este sitio está en beta privada. El objetivo es formular una buena pregunta de ejemplo. Esta es una mala pregunta como tal. Que haya una respuesta aceptada es completamente irrelevante.
@Bernhard: Esta es tu opinión. En mi opinión, esta pregunta es bastante buena, y "más similar a lo dado" es una pauta perfectamente clara y muy aceptable. Realmente no entiendo tu odio. (y si usa todas las funciones o no es discutible. Por ejemplo, soy un escritor. Tiendo a hacer preguntas sobre cosas que nunca uso ni tengo la intención de usar; los personajes de mis historias sí lo hacen. Si quisiera evitar problemas de marcas registradas con mi libro y aún tener a mi personaje usando un software real no abstracto similar a Matlab, y ejecutándose en Linux, haría la misma pregunta).

Respuestas (5)

No hay un reemplazo único para Matlab en Linux. Matlab es un paquete de software realmente enorme, que incluye un ecosistema de biblioteca bastante grande.

Octave es una alternativa gratuita para Matlab. Le faltan bastantes características, pero todos los elementos básicos están ahí. He usado ambos, pero es bastante difícil dar una buena evaluación basada en mis propios sentimientos. Esta página enumera algunas diferencias menores, pero principalmente casos en los que Octave es mejor que Matlab. Probablemente el mayor problema es que algunas funciones actúan de manera diferente, por ejemplo, producto de booleanos y carga de archivos vacíos . Esto es importante, ya que dificulta la portabilidad de sus propios scripts, ya que suceden cosas inesperadas.

Mis propios sentimientos son que

  • Matlab es mucho más maduro que Octave (no debería ser una sorpresa)
  • Matlab es más rápido (no tengo datos empíricos sobre esto, es solo una sensación)
  • La interfaz de usuario de Matlab es notablemente mejor
  • El soporte de la biblioteca y el código de ejemplo disponible en la web para Matlab son de mayor calidad que para Octave.

Dicho esto, Octave es gratis y Matlab cuesta mucho más de lo que el consumidor medio puede permitirse pagar.


Sagemath es otra alternativa, pero está más cerca de Mathematica en funcionalidad.

Para obtener más soluciones de bricolaje, eche un vistazo a R, Scilab y Python. No obtendrá un paquete todo en uno integrado con estos, y la curva de aprendizaje es bastante empinada.

-1: Creo que las pautas para SR son "un producto por respuesta". De lo contrario, los votos no reflejan la creencia en productos individuales, que es el punto real aquí. Aplicaré un voto de +1 a una respuesta de Octave pura, pero no tengo opinión sobre SageMath.
@IraBaxter ¿Puede señalarme esta guía?
@IraBaxter Eso se está discutiendo, pero aún no hay consenso.

Octava

como dijo Olli, Ocatave es una alternativa de matlab:

Características notables (compartidas con matlab):

  • Sintaxis casi idéntica. consumirá casi todos los archivos m sin cambios. el mfile es también su formato predeterminado. La sintaxis es tan idéntica que el curso de matlab de mi universidad usa octava en el autograder, aunque la unidad se enseña completamente en matlab y solo menciona la octava una vez de pasada.

  • Integración de la biblioteca BLAS de alta calidad (normalmente, creo que está integrado con OpenBlas, pero esto puede depender de su sistema, puede ser Atlas). Debido a BLAS, como matlab, es mucho más eficiente utilizar técnicas vectoriales (en lugar de bucles for), por lo que un buen código de matlab sigue siendo un buen código de octava .

  • Subprocesos múltiples automáticos para el rendimiento: si escribe un código complejo en Octave o Matlab y abre una herramienta para ver la carga de su CPU, cargará todos sus núcleos. Esta paralelización significa que las cosas deberían funcionar más rápido.
  • Gráficos 3D con interacción del mouse: si crea un gráfico 3D, la ventana que se abre admite la interacción del mouse para acercar, desplazar y rotar.

También hay algunas características adicionales , pero nunca las he encontrado lo suficientemente notables como para recordarlas.

Faltan características notables:

  • Bibliotecas : no hay simulink, y no existen otras bibliotecas, como Signal Processing Toolbox . Pero hay algunas alternativas como el paquete de señales .
  • Espacio de trabajo GUI : el entorno de trabajo de octava es un shell de línea de comandos. Es funcional y usa algo como GNU readline . Cuando traza un gráfico que se abre en una nueva ventana con gráficos completos. (del gráfico). Pero no hay editor de gráficos, ni exportador de archivos en el lateral, ni explorador de variables, etc. Solo un caparazón.
Corrección: recientemente instalé el edificio Octave 4.2.1 desde la fuente. Si tiene las dependencias adecuadas en su lugar, Octave viene con una GUI ordenada. Entonces, Octave no es únicamente un programa shell.

Recomendaría Scilab , ya que lo he usado y encontré que es una alternativa de código abierto decente para MATLAB. No tiene la solidez ni el pulido de un paquete profesional, pero dado que está basado en el lenguaje MATLAB, lo que aprenderá puede transferirse más adelante si sus necesidades cambian o si se encuentra trabajando en un entorno donde MATLAB es el defecto.

Citando a Richie Cotton en Stack Overflow :

Scilab es para MATLAB lo que OpenOffice es para MS Office. Es decir, no es exactamente un clon y no está tan pulido. Obtiene la mayor parte de la funcionalidad de MATLAB, y el precio es mucho más agradable.

[+1] ¿Algo que pueda agregar sobre la compatibilidad de sintaxis con Matlab (para saber si es fácil transferir cosas existentes a Scilab)?
Scilab tiene un traductor de archivos m incorporado, lo que facilita la transferencia de su código a MATLAB. Además, es multiplataforma, es decir, funciona con Windows/Linux/MacOS. Bueno, como solo he usado SCILAB, no podré decir sus ventajas/desventajas sobre otros, pero sí, lo encontré bastante bueno.
También tenga en cuenta que Scilab ha existido por un tiempo y que está patrocinado por el gobierno francés.

Echa un vistazo a Julia : http://julialang.org/

Julia está diseñada para el trabajo científico numérico, incluido el trabajo interactivo. Tiene una interfaz de portátil de buena calidad disponible como Mathematica y Sage. Tiene el mejor rendimiento de su clase, consulte los puntos de referencia en la página principal. Puede llamar a Python, lo que abre muchas bibliotecas útiles para él.

Julia se ha diseñado específicamente para facilitar la transición a los usuarios de MATLAB. La sintaxis básica es similar. Sin embargo, su lenguaje de programación es más moderno y avanzado que el de MATLAB (por ejemplo, admite metaprogramación ).

Julia es un sistema relativamente nuevo, por lo que no es tan completo como otros (R, Octave), pero tiene una comunidad en crecimiento y promete mucho.

(como usted dice) Una característica notable de Julia que es particularmente buena en comparación con decir numpy, es que la sintaxis para las operaciones numéricas es casi idéntica a Matlabs. En la medida en que al portar algoritmos numéricos, copiar y pegar y luego corregir las excepciones es viable.

Si no necesita compatibilidad exacta con Matlab, Freemat es una opción.

ingrese la descripción de la imagen aquí

http://freemat.sourceforge.net/

Puede ser bastante rápido, ya que utiliza LLVM como compilador JIT.

http://freemat-blog.blogspot.com/2008/02/por-que-jit-how-to-jit.html

Freemat ha tenido una GUI integrada durante más tiempo que Octave, aunque la GUI de Octave ha ido mejorando.

El principal inconveniente es que no se desarrolla tan activamente como Octave; el último lanzamiento fue en 2013.

https://www.openhub.net/p/_compare?project_0=FreeMat&project_1=GNU+Octave

Usé Freemat en 2010 en una empresa nueva, satisfizo nuestras necesidades.