Бесплатные альтернативы Matlab, работающие в Linux?

Недавно я присоединился к людям, использующим Linux. В результате я пытаюсь заменить как можно больше приличных приложений бесплатными — и, если возможно, с открытым исходным кодом — альтернативами.

Поскольку мне нужен достойный инструмент для моих математических экспериментов, и я использовал MATLAB R2013b в своей предыдущей установке Windows, мне не терпится узнать о бесплатных — предпочтительно с открытым исходным кодом — альтернативах Matlab, которые будут работать в Linux (Ubuntu).

Существуют ли бесплатные альтернативы Matlab, работающие в Linux? Что для меня наиболее важно, так это то, что альтернатива Matlab должна быть близкой, когда речь идет о совместимости синтаксиса… так что большинство программ можно легко портировать (или, если возможно, импортировать). Кроме того, я почти уверен, что ни одна альтернатива не будет иметь полный набор функций, предоставляемых Matlab, поэтому для меня также было бы важно знать, какие различия в функциональности я должен ожидать при использовании предложенных вами альтернатив. Значение: есть ли что-то, что может сделать бесплатная альтернатива (альтернативы), чего не может сделать MATLAB R2013b, и наоборот?

Полнофункциональных замен Mathlab не существует. Итак, ожидайте отсутствующих функций и худшей производительности. И меньше библиотек.
Matlab имеет множество функций. Какие функции вы используете? Вы пробовали Scilab, который стремится стать бесплатной альтернативой Matlab?
Этот вопрос не следует повторно открывать, потому что требования все еще расплывчаты.
@e-sushi Если вы готовы платить за Matlab в Windows, то почему бы не использовать его и в Linux?
@Bernhard Чтобы ответить на ваш вопрос , я процитирую ту часть моего вопроса, которую вы, кажется, пропустили: «… пытаясь заменить как можно больше соответствующих приложений бесплатными — и, если возможно, с открытым исходным кодом — альтернативами …» Я думаю, что это ясно говорит о том, что я не хочу платить за Matlab (больше).
@e-sushi Нет смысла в том, что существуют приложения с открытым исходным кодом, которые заменяют соответствующие приложения. Вы должны включить список спецификаций того, что вы хотите.
@Bernhard: «как можно больше» кажется очень четким требованием. Действительно ли существует так много альтернатив Matlab для Linux, которые охватывают большинство его функций, что выбрать одну или две с наибольшей совместимостью сложно? Можете ли вы назвать десять таких программ?
@СФ. Вы пытаетесь убедить меня, что он использует все функции? Это не имеет смысла. Возможно, он просто занимается преобразованием данных и построением графиков. В этом случае конвертер из кода Matlab в код Python может быть правильным ответом. Как можно больше не имеет смысла, если он использует только несколько из них.
@Bernhard Небольшое дружеское предупреждение из нашего раздела справки: « Когда я не должен комментировать?Второстепенное обсуждение или обсуждение спорного вопроса; вместо этого используйте чат ; …»
@e-sushi Вы выбираете не те части моих комментариев. Я прямо прошу три раза уточнить, что именно вы ищете: meta.softwarerecs.stackexchange.com/questions/1/…
@Bernhard: Если вы еще не заметили, на этот вопрос уже есть утвержденный ответ. Что-то, что удовлетворило спрашивающего. Тот факт, что кто-то, используя данные рекомендации, смог дать удовлетворительный ответ, является фактическим доказательством того, что вопрос был достаточно ясен и не требует дополнительных разъяснений. Считаете ли вы, что сможете предложить решение лучше, чем Olli, если e-sushi ответит на ваши вопросы? Общая совместимость всего пакета является таким же надежным показателем желательности пакета, как и любой другой, независимо от того, что вы думаете.
@СФ. Этот сайт находится в закрытой бета-версии. Цель состоит в том, чтобы сформулировать хороший пример вопроса. Это плохой вопрос как таковой. То, что есть принятый ответ, совершенно не имеет значения.
@Bernhard: это твое мнение. На мой взгляд, этот вопрос довольно хорош, и «наиболее похоже на данное» — это совершенно четкая и очень приемлемая рекомендация. Я действительно не понимаю твоей ненависти. (и использует ли он все функции или нет, это спорный вопрос. Например, я писатель. Я склонен задавать вопросы о вещах, которые я никогда не использую и не собираюсь использовать — это делают персонажи в моих рассказах. Если бы я хотел избежать проблем с товарными знаками с моя книга, и мой персонаж по-прежнему использует настоящее неабстрактное программное обеспечение, похожее на Matlab, и работающее в Linux, я бы задал тот же вопрос.)

Ответы (5)

В Linux нет единой замены Matlab. Matlab — это действительно огромный программный пакет, включающий довольно обширную библиотечную экосистему.

Octave — бесплатная альтернатива Matlab. Не хватает некоторых функций, но все основные есть. Я использовал оба, но довольно сложно дать хорошую оценку, основанную на моих собственных ощущениях. На этой странице перечислены некоторые незначительные отличия, но в основном случаи, когда Octave лучше, чем Matlab. Вероятно, самая большая проблема заключается в том, что некоторые функции действуют по-разному, например, произведение логических значений и загрузка пустых файлов . Это важно, поскольку затрудняет портирование ваших собственных скриптов, так как случаются неожиданные вещи.

Мои собственные чувства таковы, что

  • Matlab намного более зрелый, чем Octave (не должно быть сюрпризом)
  • Matlab быстрее (у меня нет эмпирических данных по этому поводу, это просто ощущение)
  • Пользовательский интерфейс Matlab значительно лучше
  • Библиотечная поддержка и доступный пример кода в Интернете для Matlab более высокого качества, чем для Octave.

При этом Octave бесплатен, а Matlab стоит намного больше, чем средний потребитель может себе позволить.


Sagemath — еще одна альтернатива, но по функциональности она ближе к Mathematica.

Чтобы узнать больше о самодельных решениях, взгляните на R, Scilab и Python. С ними вы не получите интегрированный пакет «все в одном», и кривая обучения довольно крутая.

-1: Я считаю, что рекомендации для SR - это «один продукт на ответ». В противном случае голоса не отражают веру в отдельные продукты, в чем здесь и состоит суть. Я применю голос +1 к чистому ответу Octave, но не имею мнения о SageMath.
@IraBaxter Можете ли вы указать мне на это руководство?
@IraBaxter Это обсуждается, но консенсуса пока нет.

Октава

как сказал Олли, Ocatave - это альтернатива Matlab:

Примечательные особенности (совместно с Matlab):

  • Синтаксис почти идентичен. он будет потреблять почти все m-файлы без изменений. mfile также является форматом по умолчанию. Синтаксис настолько идентичен, что курс Matlab моего университета использует октаву в автогрейдере, хотя модуль преподается полностью в Matlab и упоминает октаву только один раз вскользь.

  • Высококачественная интеграция библиотеки BLAS (обычно я считаю, что она интегрирована с OpenBlas, но это может зависеть от вашей системы, это может быть Atlas). Из-за BLAS, как и в Matlab, гораздо эффективнее использовать векторные методы (а не для циклов), поэтому хороший код Matlab по-прежнему остается хорошим октавным кодом .

  • Автоматическая многопоточность для повышения производительности: если вы напишете какой-то сложный код в октаве или матлабе и откроете инструмент, чтобы увидеть загрузку вашего процессора, он загрузит все ваши ядра. Это распараллеливание означает, что все должно работать быстрее.
  • 3D-графики с взаимодействием с мышью: если вы создаете 3D-график, открывающееся окно поддерживает взаимодействие с мышью для масштабирования, панорамирования и поворота.

Есть также несколько дополнительных функций , но я никогда не находил их достаточно примечательными, чтобы помнить о них.

Отсутствуют важные особенности:

  • Библиотеки : Simulink не существует, и различные другие библиотеки, такие как Signal Processing Toolbox , не существуют. Но есть некоторые альтернативы, такие как сигнальный пакет
  • GUI Workspace : рабочая среда octave представляет собой оболочку командной строки. Он функционален и использует что-то вроде GNU readline . При построении графика открывается в новом окне с полной графикой. (из графика). Но нет ни редактора графиков, ни обозревателя файлов сбоку, ни обозревателя переменных и т. д. Только оболочка.
Исправление: я недавно установил сборку Octave 4.2.1 из исходников. Если у вас есть правильные зависимости, Octave поставляется с аккуратным графическим интерфейсом. Итак, Octave — это не только оболочка.

Я бы порекомендовал Scilab , поскольку я использовал его и обнаружил, что это достойная альтернатива MATLAB с открытым исходным кодом. Он не обладает надежностью и полировкой профессионального пакета, но, поскольку он основан на языке MATLAB, то, что вы узнаете, может быть перенесено позже, если ваши потребности изменятся, или вы обнаружите, что работаете в среде, где MATLAB является дефолт.

Цитата Ричи Коттона о переполнении стека :

Scilab относится к MATLAB так же, как OpenOffice к MS Office. То есть это не совсем клон, и он не такой отполированный. Вы получаете большую часть функциональности MATLAB, а цена намного приятнее.

[+1] Что-нибудь, что вы можете добавить о совместимости синтаксиса с Matlab (чтобы узнать, легко ли портировать существующие вещи в Scilab)?
Scilab имеет встроенный транслятор m-файлов, который позволяет легко переносить ваш код в MATLAB. Кроме того, он кроссплатформенный, т.е. работает с Windows/Linux/MacOS. Что ж, поскольку я использовал только SCILAB, я не могу сказать о его преимуществах/недостатках по сравнению с другими, но да, я нашел его довольно хорошим.
Также обратите внимание, что Scilab существует уже некоторое время и спонсируется французским правительством.

Взгляните на Джулию : http://julialang.org/

Julia предназначена для числовой научной работы, в том числе интерактивной. Он имеет интерфейс ноутбука хорошего качества, доступный как Mathematica и Sage. У него лучшая в своем классе производительность, ознакомьтесь с тестами на первой странице. Он может вызывать Python, что открывает для него множество полезных библиотек.

Julia была специально разработана, чтобы упростить переход для пользователей MATLAB. Основной синтаксис аналогичен. Однако его язык программирования более современный и продвинутый, чем у MATLAB (например, он поддерживает метапрограммирование ).

Julia — относительно новая система, поэтому она не так совершенна, как другие (R, Octave), но у нее растет сообщество, и она подает большие надежды.

(как вы говорите) Примечательная особенность Julia, которая особенно хороша по сравнению с numpy, заключается в том, что синтаксис для числовых операций почти идентичен Matlabs. В той степени, в которой при переносе численных алгоритмов копирование и вставка, исправление исключений является жизнеспособным.

Если вам не нужна точная совместимость с Matlab, можно использовать Freemat.

введите описание изображения здесь

http://freemat.sourceforge.net/

Это может быть довольно быстро, поскольку в качестве JIT-компилятора используется LLVM.

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

Freemat имеет встроенный графический интерфейс дольше, чем Octave, хотя графический интерфейс Octave становится лучше.

Главный недостаток в том, что он не так активно развивается, как Octave; последний выпуск был в 2013 году.

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

Я использовал Freemat в 2010 году в стартапе, он удовлетворил наши потребности.