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


82

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

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

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


7
Вам следует учитывать затраты на миграцию и обучение.
Daniel Moura

10
Почему не Python? stackoverflow.com/questions/1776290/… NumPy для пользователей MATLAB: mathesaurus.sourceforge.net/matlab-numpy.html
Михаил

5
@Mikhail: Из-за взаимодействия с партнерами, которые используют Matlab.
Jonas

2
@Jonas: внешних партнеров тоже можно убедить ... Если они увидят, что все говорят о миграции на Python ...
Михаил

Этот вопрос по-прежнему часто возникает в связанных темах, но сейчас он ужасно устарел (более 10 лет).
Тасос Папастилиану

Ответы:


52

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

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

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


8
Я не думаю, что проблема связана с пользователями MATLAB. Замечательно, что существует альтернатива FOSS, и люди, которые хотят работать над этим, делают это. Люди распоряжаются своим временем тем, чем хотят. Критиковать пользователей той или иной программы - это ребячество.
carlosdc 09

2
Для всех, кому интересно, он следует по ссылке для установщика Octave 3.8 Windows: mxeoctave.osuv.de
juliohm

2
Эти проблемы можно решить через веб- сайт bountysource.com/teams/gnu-octave/issues за деньги, которые стоят в десять раз меньше, чем одна лицензия Matlab.
Сергей

2
По состоянию на 2017 год вам действительно стоит попробовать. Вы будете удивлены, что большинство, если не все, ваши сценарии MATLAB будут запускаться из коробки (кроме определенных наборов инструментов), если вы потратите один день на исправление некоторых незначительных несовместимостей. Что такое один день по сравнению с преимуществами разработки безлицензионного программного обеспечения с открытым исходным кодом?
Hugo Raguet 07

24

Просто вне моей головы:

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

+1 за пункт №5. Я даже не нашел бесплатного графического интерфейса для Octave, который можно было бы установить и который работал бы надежно, не говоря уже о хорошем. SciLab может быть хорошей альтернативой Matlab, но я не знаю, насколько он хорош в отношении пунктов 1-4.
Стефан Смит

15

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

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

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


10

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

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

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

Минусы октавы в том, что они немного отстают от инструментов, хотя, если вы посмотрите, вы можете найти похожие вещи. 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 в оболочке или эмулируется?
user1240280 01

1
очень плохо, (портативная) параллельная версия cellfun / arrayfunc кажется хорошей идеей ... Может быть, MATLAB тоже подойдет :)
Амро

@ user1240280: возможность определять функции в скрипте - ИМХО, огромное преимущество Octave перед Matlab. Он позволяет вам писать всю программу в модульном режиме и хранить ее в одном файле, чтобы вы могли легко отправить ее себе или другим. Но отсутствие у Octave графического интерфейса - большой недостаток.
Стефан Смит

@stefan smith: Octave теперь имеет собственный графический интерфейс, все еще экспериментальный, но, судя по моему недавнему опыту, он вполне удобен и более или менее стабилен. вы можете попробоватьoctave --force-gui
Legionair

9

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


6
Есть ли у Octave аналог руководства? Вот почему мне отказали?
Doresoom

8

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

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

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

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

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

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

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


6

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

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


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

5

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

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

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

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


3

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

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


2

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

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

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


0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.