Почему/когда я предпочитаю MATLAB над Octave?
В нашей операции shoestring нам нужно прототипировать алгоритмы на каком-то языке более высокого уровня, прежде чем перейти к реализации C на встроенном оборудовании.
До сих пор мы использовали MATLAB для этого, но расходы на лицензирование начинают болеть. Мы рассматриваем перенос нашего кода MATLAB на Octave.
Есть ли какая-то особая причина не для этого? Разве мы нарушим совместимость, особенно если у нас есть внешние партнеры, которые настаивают на использовании MATLAB? Есть ли какие-либо штрафы за производительность, которые мы можем ожидать?
Ответы
Ответ 1
В 2008 году я попытался сделать то же самое. Я быстро заметил следующие показательные пробки:
- Панели инструментов не так полны и не так хорошо протестированы. В частности, инструментарий обработки изображений, на который моя работа в значительной степени зависела (большая пробковая пробка заключалась в том, что имтрансформация не была реализована).
- Отладчик и профайлер Octave были примитивны по сравнению с Matlab's.
- Если вы работаете с другими, может быть очень сложно заставить их измениться.
- Если вы используете сторонние панели инструментов, вы сами можете заставить их работать.
- Графики октавы не являются качеством публикации.
Но я должен сказать, что меня в целом впечатлило то, насколько совместим Octave с Matlab, если ваше использование Matlab является базовым, вам может повезти. Наконец, это было в 2008 году, через два года многое может измениться.
Ответ 2
Сверху моей головы:
- Есть много наборов инструментов, которые нет в Octave, поскольку я обнаружил, что два семестра назад пытался выполнить домашнее задание в процессе машинного обучения.
- У Octave есть намного более низкий отладчик. Работать было практически невозможно.
- Matlab намного быстрее для многих типов операций.
- Графики Matlab намного приятнее.
- У Octave нет собственного GUI. Есть графические интерфейсы для Octave, но они уступают Matlab native.
Ответ 3
Я тестировал октаву и R тоже.
Что касается октавы: Я был очень впечатлен сходством синтаксиса октавы. Мне не потребовалось много времени, чтобы переносить мои сценарии MATLAB на октаву. В то же время у меня есть особая проблема с маркерами печати вместе с ошибкой, которая была исправлена Ярно Раджахалме в nabble и для изменения размера шрифта xtick, который обходной путь я получил в ответе на вопрос в nabble. Таким образом, у него все еще есть некоторые ошибки, которые с некоторыми усилиями можно преодолеть. Если у вас возникли проблемы, вы можете попробовать nabble mailing forum: [email protected] К слову, моя команда не может адаптироваться к ней, так как они адаптируются к MATLAB, поэтому мы все еще используем MATLAB. Поскольку MATLAB построен под gnuplot, другой способ исправить его ошибки - редактировать сгенерированный файл gnuplot. Лучшей IDE, которую я нашел, была QtOctave, что я сделал краткий обзор в "Remember Blog".
Что касается R: в соответствии с исследованием, проведенным SciViews, производительность R превосходит MATLAB и октаву. У меня нет большого опыта работы с R. Я изучил пакет mclust, чтобы написать главу wikibook о EM Clustering в R. Кстати, у них, похоже, очень активное сообщество. Таким образом, вы можете найти пакеты сторонних поставщиков для предложений, которые не являются стандартизированными ИМО. Лучшей IDE, которую я нашел, был плагин StatET для eclipse, JGR (Java GUI для R) и emacs. Несмотря на временные затраты на изучение нового языка программирования, если бы я выбрал платформу с открытым исходным кодом, чтобы сделать свою графику эксперимента и некоторый анализ интеллектуального анализа данных, я бы попробовал R.
Ответ 4
Octave имеет несколько синтаксических улучшений в Matlab, например, вы можете сказать endif
endfor
и endfunction
вместо просто end
, что значительно облегчает отладку.
Octave также позволяет динамически генерировать функции и иметь несколько функций, определенных в сценариях и файле функций. Какой способ лучше, чем подход, основанный на одно файловом однозадачном представлении по методу Matlab.
Наконец, октава имеет parcellfun
и pararrayfun
, которые являются очень мощными инструментами параллельной обработки, которые полностью отсутствуют в matlab. В matlab есть parfor
, но это не лучший способ сделать это, на мой взгляд.
Минусы для октавы заключаются в том, что они немного отстают на панелях инструментов, хотя, если вы посмотрите, вы можете найти похожие вещи. fsolve
и lsode
кажутся немного более медленными, но более прочными, по октаве почему-то. Кроме того, большой облом для некоторых людей, как правило, является отсутствие символической ссылки и инструментария DAQ, но этот материал все равно будет запатентован.
Python/Numpy определенно стоит вихря: он более мощный, но их синтаксис нацелен на более сложные фрагменты кода.
Ответ 5
В Octave нет guide
, что упрощает создание GUI. Я регулярно использую руководство для создания инструментов для моего не-MATLAB с помощью коллег.
Ответ 6
В вашем случае использования октава может превосходить MATLAB:
-
Он имеет синтаксис, который позволит вам
напишите код, который немного ближе к
C. i.e. + =, - =, функция по умолчанию
значения параметров, строка с двойными кавычками
литералы и т.д.
-
Предполагая, что ваши фишки медленнее, чем
настольный процессор, скорость
не будет проблемой.
-
Поскольку он запускается намного быстрее, чем
Matlab, более практично
интегрировать в сценарии оболочки для тестирования.
-
Для прототипирования график более чем достаточен; люди просто привыкли к стилю MATLAB.
-
Относительный недостаток наборов инструментов не
большое дело, поскольку они не были бы
доступно на целевой платформе
в любом случае.
Я использую оба, и всякий раз, когда я переключаюсь, я пропускаю функции от другого.
Ответ 7
Там есть хороший WikiBook на MATLAB с список различий между MATLAB и Octave.
По моему опыту, ядро MATLAB хорошо переносится в Octave, но панели инструментов имеют разный уровень совместимости, поэтому ваше решение зависит от того, что именно вы пытаетесь закодировать.
Некоторые вещи, отсутствующие в Octave, AFAIK - это тесная интеграция с .NET-кодом и создателем gui, guide
(хотя есть много других инструментов для создания графического интерфейса, которые могут использовать Octave).
Кроме того, как указывали другие, многое из того, что вы платите за MATLAB, - это интерфейс с гладким интерфейсом и инструменты для отладки/профилирования. Опытные кодеры, вероятно, могут справиться с альтернативами, но новички могут бороться.
Ответ 8
Интересно посмотреть, как альтернатива с открытым исходным кодом работает для статистики, но не для численного анализа. R (октава статистики) в наши дни очень популярна, чем коммерческий S-plus (статистика статистики). Проблемы, упомянутые в качестве причин не отходить от Matlab, найденные в других ответах, также применимы к R. Но все же все только начали вносить свой вклад, и теперь R является стандартом, с лучшей графикой, лучшими пакетами и не более чем блокировщиком поставщика.
Таким образом, вы можете предпочесть октаву над матлабом, если вы сможете преодолеть дилемму заключенных.
Ответ 9
Обратите внимание, что Octave поддерживает языковые конструкции, отсутствующие в Matlab (например, операторы автоматического инкремента, инструкции do-until и т.д.). Это делает его иногда раздражающим для кода порта, разработанного (кем-то, кто не знаком с ограничениями Matlab) на Octave в среде Matlab.
В FAQ по Октаве есть несколько других ограничений/различий.
Ответ 10
Вы должны обязательно предпочесть Matlab для Octave, если вы можете себе это позволить.
У меня не было большого опыта работы с Octave, но я бы ожидал проблем, если ваш код использует набор инструментов Matlab, причудливые графики или Matlab gui.
Я бы ожидал, что это будет похоже на OpenOffice и MS Office. В основном совместимый, но достаточно разный, чтобы дать вам головную боль.
Ответ 11
Я успешно перенес некоторые приложения линейной регрессии и квадратичного программирования в Octave.
Линейная регрессия (оператор обратной косой черты) работала без какой-либо корректировки. В случае квадратичного программирования мне пришлось переключиться с fmincon() на sqp(), давая аналогичные результаты.
Тем не менее, инструментальные панели и графический интерфейс в Octave, действительно, менее зрелые (я потратил столько времени на основные вещи), хотя за последние два года он быстро добивался прогресса.