Отличия между Octave и MATLAB?

244

Я программист, который знает Python, Ruby и некоторые C, которые пытаются решить, следует ли изучать GNU Octave или Matlab. Я знаю, что у них много вообще, но мне непонятно, насколько похожи синтаксис или даже структуры данных. Все говорят, что они "похожи", но никто не говорит, насколько они похожи. В приведенной выше ссылке показаны несколько примеров, где они синтаксически похожи или идентичны, верно ли это для всего языка?

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

Кроме того, стоит ли Matlab стоить? У меня нет больших денег, но если есть важные различия в библиотеках или где-то еще, я уверен, что смогу найти деньги.

  • 7
    Поскольку вы являетесь студентом, стоит проверить, предоставляет ли ваша школа matlab учащимся бесплатно / дешево; это делают и мои старшекурсники, и аспиранты, что несколько облегчает решение перейти на matlab.
  • 18
    Да, но когда он покинет университет и пойдет в какой-то исследовательский центр, ему придется его купить, и к тому времени он будет знать только Matlab, а не альтернативы. Поэтому, думая о долгосрочной перспективе, если вы хотите сделать карьеру в науке, которая, как кажется, он хочет, вы не должны игнорировать это. Не говоря уже о том, что такие лицензии обычно нельзя использовать и для кластеров.
Показать ещё 8 комментариев
Теги:
octave

9 ответов

227
Лучший ответ

Вместо того, чтобы предоставить вам полный список различий, я выскажу свое мнение по этому вопросу.

Если вы внимательно прочитаете предоставленную вами вики-страницу, вы часто будете видеть предложения типа "Octave поддерживает оба, а MATLAB требует первого" и т.д. Это показывает, что разработчики Octave пытаются сделать синтаксис Octave "превосходящим" MATLAB.

Такое отношение заставляет Октаву полностью потерять свою цель. Идея, лежащая в основе Octave, заключается в том, чтобы (или я должен сказать, см. Комментарии ниже) иметь альтернативу с открытым исходным кодом для запуска m-кода. Если он пытается быть "лучше", он пытается стать другим, что не соответствует причинам, по которым большинство людей его используют. По моему опыту, запуск вещей, разработанных в MATLAB, никогда не работает за один раз, за исключением действительно простых, действительно коротких вещей - для любой значительной функции мне всегда приходится переводить много вещей, прежде чем они будут работать в Octave, если не переписывай это с нуля. Как это лучше, я действительно не вижу...

Кроме того, если вы изучаете Octave, в Octave допускается много синтаксиса, а в MATLAB - нет. Значение: код, написанный на Octave, часто не работает в MATLAB без многочисленных преобразований. Это также не совместимо наоборот!

Я мог бы продолжить: у MathWorks есть много наборов инструментов для MATLAB, там Simulink и связанные с ним продукты, для которых действительно нет эквивалента в Octave (да, вам придется платить за все это. Но часто ваш работодатель/школа делает это в любом случае и, ну, по крайней мере, он существует), доказанное соответствие нескольким отраслевым стандартам, инструментам тестирования, инструментам проверки, системам управления требованиями, генерации отчетов, значительно большему количеству пользователей и пользователей и т.д. и т.д. и т.д. MATLAB - это лишь малая часть чего-то гораздо большего. Октава это... просто Октава.

Итак, мой совет:

  • Узнайте, заплатит ли ваша школа за MATLAB. Часто они будут.
  • Если нет, и если вы можете собрать деньги вместе, купите MATLAB и научитесь правильно его использовать. В конечном итоге это лучшее решение.
  • Если вы действительно не можете получить деньги - используйте Octave, но изучите синтаксис MATLAB и держитесь подальше от синтаксиса Octave-only. (смотрите примечание)

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

Если вы получаете новую работу, и все в вашем новом офисе говорят по-испански, то довольно глупо требовать от всех, чтобы они начали говорить по-английски, просто потому, что вы не говорите по-испански. То же самое с MATLAB и Octave.

NB - если бы все downvoters могли просто оставить комментарий со своими аргументами и причинами несогласия со мной, это было бы здорово :)

Примечание: Octave можно запустить в "традиционном режиме" (включив флаг --traditional при запуске Octave), что выдает ошибку при использовании определенного синтаксиса только для Octave.

  • 23
    Что касается отсутствия JIT, то оно уже было реализовано в разрабатываемой версии Octave. Я не знаю, когда это выйдет, но я его создал, и разница для зацикленного кода огромна. И чтобы держаться подальше от синтаксиса Octave, есть опция --traditional Octave. Я не говорю, что код Matlab всегда запускается в Octave, но с каждым выпуском это становится намного лучше, и совместимость является одним из их приоритетов (не говоря уже о том, что даже разные версии Matlab имеют достаточно несовместимости между ними).
  • 0
    Спасибо! Вы подняли несколько замечательных моментов, о которых я не задумывался. Я мог бы начать возиться с Octave, но в конечном итоге перейти к Matlab, как только я получу лицензию.
Показать ещё 35 комментариев
72

Более полная ссылка на список различий содержится в Часто задаваемые вопросы Octave. Теоретически, весь код, который работает в Matlab, должен работать в Octave, а разработчики Octave обрабатывают несовместимость с Matlab как ошибки. Таким образом, ответ на ваш первый вопрос - это да в теории. Конечно, все программное обеспечение имеет ошибки, ни Octave, ни Matlab (да, Matlab тоже) не защищены от них. Вы можете сообщить об этом, и кто-то попытается их исправить.

Octave также имеет дополнительные функции, большинство из них - дополнительный синтаксис, который, на мой взгляд, делает код более читабельным и более понятным, особенно если вы привыкли к другому программированию languagues.

Но там больше Октава, чем только денежная стоимость. Октав свободен также в смысле свободы, это либрет, но я не думаю, что это место, где можно говорить о свободе программного обеспечения.

Я занимаюсь обработкой изображений только в Octave и считаю, что пакет изображений соответствует моим потребностям. Однако я не знаю, что будет вашим. Поэтому мой ответ на вопрос, стоит ли это стоить, - нет, но, конечно, другие не согласятся.

18

MATLAB - это, прежде всего, коммерческое предложение. Поэтому все в MATLAB в значительной степени работает из коробки. Все основные функциональные возможности являются прочными, и если вы работаете над специальным проектом, то у MATLAB, возможно, есть надстройка, которую они могут продать вам, что добавит вам много дополнительных файлов .m для домена. Это не дешево, но он работает, и он будет работать без жалобы.

Октава всегда показывает свои корни с открытым исходным кодом, информацией и потребностями. Это бесплатно, и это напомнит вам, что оно бесплатно при каждой возможности. Это разработано добровольцами, которые ненавидят Windows со страстью. Поэтому Octave работает на Windows неохотно. Удивительно, что так много функций MATLAB существует, как и они.

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

И реакция Octave - это эй! Это бесплатное программное обеспечение! У вас есть весь исходный код, вы можете исправить все эти ошибки самостоятельно! Возможно, если бы у меня было бесконечное время и ресурсы на моих руках, я мог бы потратить все свое время на исправление ошибок в бесплатном программном обеспечении, но лично я этого не делаю. Если бы я работал в академических кругах, я бы мог.

Таким образом, проблема в том, следует ли выбирать MATLAB или Octave, сводится к одному вопросу. Интересно, что этот вопрос всегда один и тот же при выборе между коммерческими и бесплатными вариантами программного обеспечения.

И вопрос:

У вас больше денег, чем времени?

  • 2
    Другой вопрос: что используют компании, в которых вы могли бы работать? Вероятно, Matlab по тем же причинам.
12

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

MATLAB, вероятно, намного более мощный, чем Octave, и алгоритмы работают быстрее, но для большинства приложений Octave более чем достаточен и, на мой взгляд, "потрясающий инструмент, совершенно бесплатный, где Octave абсолютно свободен.

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

Наконец, проблема SIMULINK. Если вы хотите сделать симуляцию или дизайн системы управления (возможно, миллион других применений) SIMULINK - это фантастика и поставляется с MATLAB. Я не думаю, что кто-то другой приблизился к этому, хотя Scilab, по-видимому, "хороший" вариант с открытым исходным кодом, я его не пробовал.

Мир.

  • 0
    «... потому что он был разработан и поддерживается группой добровольцев, где развитие MATLAB финансируется миллионами долларов промышленностью». Количество денег в проекте не является причиной качества и без ошибок. Возможно, это даже не корреляция.
8

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

  • 2
    Octave имеет графический интерфейс, который в настоящее время находится в бета-версии. Используйте команду --force-gui при выполнении октавы.
  • 6
    ... и начиная с версии Octave 4 GUI является интерфейсом по умолчанию.
7

Вещь делает Matlab настолько популярной и особенной - это отличные инструментальные панели в разных дисциплинах. Поскольку ваша основная цель - изучить Matlab, так что совсем не так, если вы работаете с Octave или Matlab!

Просто переходя и покупая Matlab без какой-либо классной панели инструментов (которая в основном зависит от вашего основного) на самом деле не разумный расход!

Вы, безусловно, можете хорошо начать с Octave и следовать тоннам обучающих программ на Matlab в Интернете.

4

Не так много, что я хотел бы добавить к Rody Oldenhuis. Я обычно следую стратегии, что все функции, которые я пишу, должны выполняться в Matlab.

Некоторые конкретные функции, которые я тестирую в обеих системах, для следующих вариантов использования:

a) октаве не требуется сервер лицензий - например, если ваше учреждение не поддерживает локальные лицензии. Я использовал его один раз в ситуации, когда система, в которой я использовал script, не имела никакого подключения к Интернету и собиралась работать очень долго (в углу в лаборатории) и использовалась многими разными пользователями. Замечание: речь идет не о стоимости лицензии, а о связанных с ней технических проблемах.

b) Octave поддерживает другие платформы, например Rasberry Pi (http://wiki.octave.org/Rasperry_Pi) - что может пригодиться.

3

Вложенные функции и блокировки теперь поддерживаются многими языками, включая MATLAB. JavaScript способствует закрытию в качестве принципа разработки первого класса.

К сожалению, Octave не поддерживает закрытие (вложенные функции с лексическим охватом).

В соответствии с http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html можно даже создать впечатление, что разработчики не хотят или не могут это исправить.

Это сломает много кода в обоих направлениях. Нет обходного пути.

  • 0
    Я не уверен, что это больше точно. Вложенные функции реализованы в Octave, и я обнаружил, что они более универсальны, чем Matlab: например, возможность объявлять функции (кроме лямбды) внутри скрипта, что было невозможно с Matlab в прошлый раз, когда я пытался это сделать.
  • 0
    @MayeulC Быть более универсальной частью на самом деле в обоих направлениях.
0

Октав и матлаб имеют много общего. Но Octave - это интерфейс командной строки. Вы должны ввести каждую команду в командной строке, а в Matlab - лучший графический интерфейс. Сначала я рекомендую использовать версию студента Matlab; после изучения базовых уроков используйте gnu octave permentaly. Теперь gnu octave поставляется с gui, но теперь это версия для разработки. Существует несколько интерфейсов gui для октавы gnu, таких как guioctave, xoctave (не бесплатно), DomainMath IDE и т.д.

  • 2
    Разработанная версия octave (3.7.5) поставляется с родным графическим интерфейсом, который выглядит довольно красиво!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню