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

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

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

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

Ответы [ 11 ]

51 голосов
/ 21 августа 2010

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

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

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

24 голосов
/ 21 августа 2010

С макушки головы:

  1. Есть много наборов инструментов, которых нет у Octave, как я обнаружил, когда два семестра назад пытался выполнять домашнюю работу на курсе машинного обучения.
  2. У Octave гораздо худший отладчик. С ним было почти невозможно работать.
  3. Matlab намного быстрее для многих типов операций.
  4. Сюжеты Матлаба намного приятнее.
  5. У Octave нет встроенного графического интерфейса. Существуют графические интерфейсы для Octave, но они уступают родному Matlab.
14 голосов
/ 21 августа 2010

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

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

Что касается R: , согласно исследованию, проведенному SciViews, производительность R превосходит MATLAB и октаву. У меня нет большого опыта работы с R. Я изучал пакет mclust, чтобы написать главу вики-книги о EM Clustering в R. Кстати, у них, похоже, очень активное сообщество. Таким образом, вы можете найти сторонние пакеты предложений, которые не стандартизированы IMO. Лучшей IDE, которую я нашел, был плагин StatET для eclipse, JGR (Java GUI для R) и emacs. Несмотря на затраты времени на изучение нового языка программирования, если бы я выбрал платформу с открытым исходным кодом для экспериментальной графики и некоторого анализа данных, я бы попробовал R.

10 голосов
/ 30 июня 2012

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

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

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

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

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

9 голосов
/ 21 августа 2010

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

7 голосов
/ 11 июня 2011

В вашем случае октава может быть лучше, чем MATLAB:

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

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

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

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

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

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

5 голосов
/ 23 августа 2010

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

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

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

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

5 голосов
/ 21 августа 2010

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

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

3 голосов
/ 04 июня 2011

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

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

2 голосов
/ 21 августа 2010

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

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

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

...