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

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

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

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

9 ответов


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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

и вопрос:

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


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

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

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

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

Мирный.


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


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

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

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


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

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

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

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


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

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

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

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


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