Почему / когда я должен предпочесть MATLAB над Октавой?
в нашей операции shoestring нам нужно прототипировать алгоритмы на каком-то языке более высокого уровня, прежде чем совершать реализацию C на встроенном оборудовании.
до сих пор мы использовали MATLAB для этого, но затраты на лицензирование начинают болеть. Мы рассматриваем возможность переноса нашего кода MATLAB на октаву.
есть ли какая-то особая причина не что делать? Нарушим ли мы какую-либо совместимость, особенно если у нас есть внешние партнеры, которые настаивают на использовании MATLAB? Есть ли потерь производительности можно ожидать?
11 ответов:
в 2008 году я попробовал сделать то же самое. Я быстро заметил следующие шоу пробки:
- наборы инструментов не так полно и не так хорошо проверены. В частности, инструментарий обработки изображений, на который моя работа сильно полагалась (большой стопор шоу состоял в том, что imtransform не был реализован).
- отладчик октавы и профилировщик были примитивны по сравнению с Matlab.
- Если вы работаете с другими людьми, это может быть очень трудно заставить их изменить.
- Если вы используете сторонние наборы инструментов, вы сами заставляете их работать.
- графики Октавы не являются качеством публикации.
но я должен сказать, что я вообще был впечатлен тем, насколько совместима Октава с Matlab, если ваше использование Matlab является базовым, вам может повезти. Наконец - то это было в 2008 году, за два года многое может измениться.
прямо с моей головы:
- есть много наборов инструментов, которые Октава не имеет, как я обнаружил, когда я пытался сделать домашнее задание в курсе машинного обучения два семестра назад.
- Октава имеет гораздо более низкий отладчик. Работать с ним было практически невозможно.
- Matlab намного быстрее для многих типов операций.
- сюжеты Matlab намного приятнее.
- Октава не имеет собственного графического интерфейса. Есть графические интерфейсы для Октавы, но они уступают в родной среде 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, например, вы можете сказать
endif
endfor
и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, действительно, менее зрелые (я потратил так много времени на основные вещи), хотя он быстро прогрессирует за последние два года.