Отличия между Octave и MATLAB? [закрыто]

272

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

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

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

lswim
источник
8
Поскольку вы являетесь студентом, стоит проверить, предоставляет ли ваша школа matlab учащимся бесплатно / дешево; это делают и мои старшекурсники, и аспиранты, что несколько облегчает решение перейти на matlab.
Дугал
23
Да, но когда он покинет университет и пойдет в какой-нибудь исследовательский центр, ему придется его купить, и к тому времени он будет знать только Matlab, а не альтернативы. Поэтому, думая о долгосрочной перспективе, если вы хотите сделать карьеру в науке, которая, кажется, хочет, вы не должны игнорировать это. Не говоря уже о том, что такие лицензии обычно нельзя использовать и для кластеров.
carandraug
2
Будучи студентом, вы сможете получить лицензию Matlab примерно за 100 долларов (USD). Если вам нужны другие наборы инструментов, они дают дополнительные 29 долларов США за набор инструментов. Поэтому, не зная, какие наборы инструментов вам могут понадобиться / нужны, сложно оправдать стоимость.
Бен А.
23
+1 Я только начал изучать Octave сегодня, потому что в настоящее время я изучаю машинное обучение, и учитель рекомендовал изучать Octave (потому что это бесплатно, потому что METLAB стоит дорого, и потому что ученик будет гораздо более продуктивным, чтобы заставить машинный алгоритм работать по сначала сначала используйте Octave или METLAB, затем, когда он заработает, затем переключитесь на Java или C ++)
Энтони
7
Я бы посоветовал вам использовать python + opencv
gukoff

Ответы:

235

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

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

Такое отношение заставляет Октаву полностью потерять свою цель. Идея октава (или стал , я должен сказать, см комментарии ниже) , чтобы иметь альтернативу с открытым исходным кодом для запуска м-код. Если он пытается быть «лучше», он, таким образом, старается быть другим , что не соответствует причинам, по которым большинство людей его используют. По моему опыту, запуск вещей, разработанных в 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.

Роди Олденхуис
источник
25
Что касается отсутствия JIT, то оно уже было реализовано в разрабатываемой версии Octave. Я не знаю, когда это выйдет, но я его создал, и разница в зацикленном коде огромна. И чтобы держаться подальше от синтаксиса Octave, есть опция --traditional Octave. Я не говорю, что код Matlab всегда запускается в Octave, но с каждым выпуском это становится намного лучше, и совместимость является одним из их приоритетов (не говоря уже о том, что даже разные версии Matlab имеют достаточно несовместимости между ними).
Карандраг
14
И то, что вы называете, придерживается превосходного синтаксиса ... если бы у вас была свобода изменять Matlab, добавлять дополнительный синтаксис или другие функции, не так ли? Это функции, реализованные пользователями, и они не нарушают совместимость. Чаще всего этого не происходит, новые вещи отвергаются. Идея состоит в том, что язык Matlab является подмножеством языка Octave. Если вы думаете, что идея замечательная, тогда вам следует присоединиться, потому что это проект сообщества и имеет функции, которые сообщество пытается развить.
carandraug
19
@RodyOldenhuis это не должен быть клон. Развитие Октав не начать этот путь, он только что получил все больше и больше толкнул в этом направлении со стороны пользователей , которые держат подавших патчи для него sciencedirect.com/science/article/pii/S0959152412000911
carandraug
9
Был ли создатель какого-либо инструмента программирования НИКОГДА признан ответственным за ошибку?
Мартин Беккет
6
@carandraug: ах к черту это. Правильность важнее всего этого :)
Rody Oldenhuis
79

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

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

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

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

carandraug
источник
23

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

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

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

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

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

И вопрос такой:

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

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

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

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

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

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

Мир.

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

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

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

Благодаря тому, что Matlab настолько популярен и уникален, его отличные наборы инструментов в разных дисциплинах. Так как ваша главная цель - изучить Matlab, то, если вы работаете с Octave или Matlab, ничего не изменится!

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

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

user702846
источник
4

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

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

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

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

Александр Кемп
источник
3

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

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

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

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

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

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

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