Почему / когда я должен предпочесть MATLAB, а не Octave?

72

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

До сих пор мы использовали MATLAB для этого, но расходы на лицензирование начинают болеть. Мы рассматриваем перенос нашего кода MATLAB на Octave.

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

  • 7
    Вы должны учитывать стоимость миграции и обучения.
  • 10
    Почему не питон? stackoverflow.com/questions/1776290/… NumPy для пользователей MATLAB: mathesaurus.sourceforge.net/matlab-numpy.html
Показать ещё 2 комментария
Теги:
octave

11 ответов

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

В 2008 году я попытался сделать то же самое. Я быстро заметил следующие показательные пробки:

  • Панели инструментов не так полны и не так хорошо протестированы. В частности, инструментарий обработки изображений, на который моя работа в значительной степени зависела (большая пробковая пробка заключалась в том, что имтрансформация не была реализована).
  • Отладчик и профайлер Octave были примитивны по сравнению с Matlab's.
  • Если вы работаете с другими, может быть очень сложно заставить их измениться.
  • Если вы используете сторонние панели инструментов, вы сами можете заставить их работать.
  • Графики октавы не являются качеством публикации.

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

  • 8
    Я не думаю, что проблема связана с пользователями MATLAB. Хорошо, что есть альтернатива FOSS, и люди, которые хотят работать над этим, делают это. Люди могут делать со своим временем все, что хотят. Критика пользователей данной программы - ребячество.
  • 2
    Для всех, кто заинтересован, перейдите по ссылке для установщика Windows Octave 3.8: mxeoctave.osuv.de
Показать ещё 5 комментариев
23

Сверху моей головы:

  • Есть много наборов инструментов, которые нет в Octave, поскольку я обнаружил, что два семестра назад пытался выполнить домашнее задание в процессе машинного обучения.
  • У Octave есть намного более низкий отладчик. Работать было практически невозможно.
  • Matlab намного быстрее для многих типов операций.
  • Графики Matlab намного приятнее.
  • У Octave нет собственного GUI. Есть графические интерфейсы для Octave, но они уступают Matlab native.
  • 0
    +1 за точку № 5. Я даже не нашел бесплатный графический интерфейс для Octave, который я мог бы установить, и который работает надежно, не говоря уже о хорошем. SciLab может быть хорошей альтернативой Matlab, но я не знаю, насколько он хорош в отношении пунктов # 1-4.
  • 0
    Небольшое обновление - у Octave теперь есть экспериментальный графический интерфейс
14

Я тестировал октаву и 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.

10

Octave имеет несколько синтаксических улучшений в Matlab, например, вы можете сказать endif endfor и endfunction вместо просто end, что значительно облегчает отладку.

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

Наконец, октава имеет parcellfun и pararrayfun, которые являются очень мощными инструментами параллельной обработки, которые полностью отсутствуют в matlab. В matlab есть parfor, но это не лучший способ сделать это, на мой взгляд.

Минусы для октавы заключаются в том, что они немного отстают на панелях инструментов, хотя, если вы посмотрите, вы можете найти похожие вещи. fsolve и lsode кажутся немного более медленными, но более прочными, по октаве почему-то. Кроме того, большой облом для некоторых людей, как правило, является отсутствие символической ссылки и инструментария DAQ, но этот материал все равно будет запатентован.

Python/Numpy определенно стоит вихря: он более мощный, но их синтаксис нацелен на более сложные фрагменты кода.

  • 1
    Я только что попробовал, и, насколько я могу судить, pararrayfun / parcellfun не поддерживаются в Windows (ну, а не Cygwin) failed to open pipe: pipe: not supported on this system . Я использую готовые бинарные файлы Windows Octave_3.6.1_VS2010 .
  • 2
    да, я полагаю, что это связано с различиями в том, как выполняются сценарии оболочки в Windows и Linux, так как pararrayfun / parcelfun работает, порождая некоторые дочерние процессы. Я не знаю, как это будет работать на Windows, я даже не уверен, исполняется ли бинарный файл Windows в оболочке или эмулируется ли он?
Показать ещё 3 комментария
8

В Octave нет guide, что упрощает создание GUI. Я регулярно использую руководство для создания инструментов для моего не-MATLAB с помощью коллег.

  • 5
    Есть ли у Octave эквивалент гида? Вот почему я получил отрицательный голос?
7

В вашем случае использования октава может превосходить MATLAB:

  • Он имеет синтаксис, который позволит вам напишите код, который немного ближе к C. i.e. + =, - =, функция по умолчанию значения параметров, строка с двойными кавычками литералы и т.д.

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

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

  • Для прототипирования график более чем достаточен; люди просто привыкли к стилю MATLAB.

  • Относительный недостаток наборов инструментов не большое дело, поскольку они не были бы доступно на целевой платформе в любом случае.

Я использую оба, и всякий раз, когда я переключаюсь, я пропускаю функции от другого.

5

Там есть хороший WikiBook на MATLAB с список различий между MATLAB и Octave.

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

Некоторые вещи, отсутствующие в Octave, AFAIK - это тесная интеграция с .NET-кодом и создателем gui, guide (хотя есть много других инструментов для создания графического интерфейса, которые могут использовать Octave).

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

3

Обратите внимание, что Octave поддерживает языковые конструкции, отсутствующие в Matlab (например, операторы автоматического инкремента, инструкции do-until и т.д.). Это делает его иногда раздражающим для кода порта, разработанного (кем-то, кто не знаком с ограничениями Matlab) на Octave в среде Matlab.

В FAQ по Октаве есть несколько других ограничений/различий.

3

Интересно посмотреть, как альтернатива с открытым исходным кодом работает для статистики, но не для численного анализа. R (октава статистики) в наши дни очень популярна, чем коммерческий S-plus (статистика статистики). Проблемы, упомянутые в качестве причин не отходить от Matlab, найденные в других ответах, также применимы к R. Но все же все только начали вносить свой вклад, и теперь R является стандартом, с лучшей графикой, лучшими пакетами и не более чем блокировщиком поставщика.

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

  • 4
    Вы должны были поместить это в комментарий, а не в ответ.
2

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

У меня не было большого опыта работы с Octave, но я бы ожидал проблем, если ваш код использует набор инструментов Matlab, причудливые графики или Matlab gui.

Я бы ожидал, что это будет похоже на OpenOffice и MS Office. В основном совместимый, но достаточно разный, чтобы дать вам головную боль.

0

Я успешно перенес некоторые приложения линейной регрессии и квадратичного программирования в Octave.

Линейная регрессия (оператор обратной косой черты) работала без какой-либо корректировки. В случае квадратичного программирования мне пришлось переключиться с fmincon() на sqp(), давая аналогичные результаты.

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

Ещё вопросы

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