Почему/когда я предпочитаю 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, действительно, менее зрелые (я потратил столько времени на основные вещи), хотя за последние два года он быстро добивался прогресса.