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


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

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

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

11 74

11 ответов:

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

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

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

прямо с моей головы:

  1. есть много наборов инструментов, которые Октава не имеет, как я обнаружил, когда я пытался сделать домашнее задание в курсе машинного обучения два семестра назад.
  2. Октава имеет гораздо более низкий отладчик. Работать с ним было практически невозможно.
  3. Matlab намного быстрее для многих типов операций.
  4. сюжеты Matlab намного приятнее.
  5. Октава не имеет собственного графического интерфейса. Есть графические интерфейсы для Октавы, но они уступают в родной среде MATLAB одна.

Я проверил октаву и R тоже.

по поводу октавы: меня очень впечатлило сходство октавного синтаксиса. Мне не потребовалось много времени, чтобы перенести мои скрипты MATLAB в octave. Meanwihile у меня есть особая проблема с печатью маркеров совместно с errorbar, которая была исправлена Ярно Раджахалме в nabble и изменить размер шрифта xtick, который обходной путь я получил в ответе на вопрос в nabble. Так что у него все еще есть некоторые ошибки, которые с некоторым усилием могут быть преодолеть. Если у вас возникли некоторые проблемы, вы можете попробовать nabble почтовый форум: help-octave@octave.org кстати, моя команда не может адаптироваться (удобный для пользователя) к нему, например, они адаптируются к MATLAB, поэтому мы все еще используем MATLAB. Поскольку MATLAB построен под gnuplot, другой способ исправить его ошибки-это редактирование сгенерированного файла gnuplot. Лучшая IDE, которую я нашел, была QtOctave, что я сделал краткий обзор в "Remember Blog".

Относительно R: согласно исследованию, проведенному SciViews, Производительность R превосходит MATLAB и octave. У меня нет большого опыта работы с R. я изучил пакет mclust, чтобы написать главу wikibook о кластеризации EM в R. кстати, у них, похоже, очень активное сообщество. Таким образом, вы можете найти сторонние пакеты предложений, которые не являются настолько стандартизированными ИМО. Лучшей IDE, которую я нашел, был плагин StatET для eclipse, JGR (JAVA GUI для R) и emacs. Несмотря на затраты времени на изучение нового языка программирования, если бы я выбрал платформу с открытым исходным кодом, чтобы сделайте мой эксперимент графики и некоторые анализ интеллектуального анализа данных я хотел бы попробовать R.

Октава имеет несколько синтаксических улучшений на matlab, например, вы можете сказать endifendfor и endfunction вместо end, что делает отладку намного проще.

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

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

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

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

Октава не имеет guide, что делает построение ГИП супер легко. Я регулярно использую руководство для создания инструментов для моих не-MATLAB с помощью коллег.

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

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

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

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

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

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

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

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

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

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

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

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

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

есть и другие ограничения / различия в Octave FAQ.

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

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

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

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

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

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