В нашей небольшой операции нам нужно создать прототипы алгоритмов на каком-нибудь языке более высокого уровня, прежде чем переходить к реализации C на встроенном оборудовании.
До сих пор мы использовали MATLAB для этого, но затраты на лицензирование начинают снижаться. Мы рассматриваем возможность переноса нашего кода MATLAB на Octave.
Есть ли какая-то особая причина не делать этого? Сможем ли мы нарушить совместимость, особенно если у нас есть внешние партнеры, которые настаивают на использовании MATLAB? Можно ли ожидать каких-либо штрафов за производительность?
Ответы:
В 2008 году я попытался сделать то же самое. Я быстро заметил следующие ограничители шоу:
Но я должен сказать, что меня в целом впечатлило, насколько Octave совместим с Matlab. Если вы используете Matlab в основном, вам может повезти. Наконец-то это было в 2008 году, через два года многое может измениться.
источник
Просто вне моей головы:
источник
Я тестировал октаву и 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.
источник
Octave имеет несколько синтаксических улучшений в Matlab, например, вы можете сказать
endif
endfor
иendfunction
вместо простоend
, что значительно упрощает отладку.Octave также позволяет динамически генерировать функции и иметь несколько функций, определенных в сценариях и файле функций. Это намного лучше, чем подход Matlab с одним файлом и одной функцией.
Наконец, октава имеет
parcellfun
иpararrayfun
которые очень мощные параллельные инструменты обработки , которые MatLab полностью отсутствуют. Естьparfor
в Matlab, но, на мой взгляд, это не лучший способ сделать это.Минусы октавы в том, что они немного отстают от инструментов, хотя, если вы посмотрите, вы можете найти похожие вещи.
fsolve
иlsode
почему-то кажутся немного медленнее, но мощнее по октаве. Также большим обломом для некоторых людей является отсутствие символических ссылок и набора инструментов DAQ, но эти вещи в любом случае будут проприетарными.Python / Numpy определенно заслуживает внимания: он более мощный, но их синтаксис нацелен на более сложные фрагменты кода.
источник
failed to open pipe: pipe: not supported on this system
. Я использую готовые двоичные файлы WindowsOctave_3.6.1_VS2010
.octave --force-gui
Octave не имеет
guide
, что делает создание графического интерфейса очень простым. Я регулярно использую руководство по созданию инструментов для моих коллег, не относящихся к MATLAB.источник
Для вашего варианта использования октава может превосходить MATLAB:
Он имеет синтаксис, который позволит вам писать код, который немного ближе к C. т.е. + =, - =, значения параметров функции по умолчанию, строковые литералы в двойных кавычках и т. Д.
Если предположить, что ваши чипы медленнее, чем настольный процессор, скорость, скорее всего, не будет проблемой.
Поскольку он запускается намного быстрее, чем Matlab, его практичнее интегрировать в сценарии оболочки для тестирования.
Для прототипирования чертежей более чем достаточно; люди просто привыкли к стилю MATLAB.
Относительное отсутствие наборов инструментов не имеет большого значения, поскольку они все равно не будут доступны на вашей целевой платформе.
Я использую оба, и всякий раз, когда я переключаюсь, я упускаю возможности другого.
источник
Интересно посмотреть, как альтернатива с открытым исходным кодом работает для статистики, но не для численного анализа. R (октава статистики) в настоящее время намного популярнее коммерческого S-plus (математическая лаборатория статистики). Проблемы, упомянутые в качестве причин не отказываться от Matlab, найденные в других ответах, также применимы к R. Но все же все только начали вносить свой вклад, и теперь R является стандартом, с лучшей графикой, лучшими пакетами и без привязки к поставщику.
Так что вы могли бы предпочесть октаву матлабу, если можете перешагнуть дилемму заключенных.
источник
По MATLAB есть хорошая WikiBook со списком различий между MATLAB и Octave .
По моему опыту, ядро MATLAB хорошо портировано на Octave, но наборы инструментов имеют разные уровни совместимости, поэтому ваше решение зависит от того, что именно вы пытаетесь кодировать.
Некоторые вещи, которых не хватает Octave, AFAIK, - это тесная интеграция с кодом .NET и построителем
guide
графического интерфейса (хотя есть много других инструментов для создания графического интерфейса, которые Octave может использовать).Кроме того, как отмечали другие, большая часть того, за что вы платите с помощью MATLAB, - это удобный интерфейс и инструменты отладки / профилирования. Опытные программисты, вероятно, справятся с альтернативами, но новички могут столкнуться с трудностями.
источник
Обратите внимание, что Octave поддерживает языковые конструкции, которых нет в Matlab (например, операторы автоинкремента, операторы do-until и т. Д.). Это иногда раздражает перенос кода, разработанного (кем-то, кто не знаком с ограничениями Matlab) на Octave, в среду Matlab.
Есть некоторые другие ограничения / отличия в Octave FAQ .
источник
Вам определенно следует предпочесть Matlab Octave, если вы можете себе это позволить.
У меня не было большого опыта работы с Octave, но я ожидал бы проблем, если в вашем коде используются наборы инструментов Matlab, модные графики или графический интерфейс Matlab.
Я ожидал, что это будет похоже на OpenOffice и MS Office. В основном совместимы, но достаточно разные, чтобы вызвать у вас головную боль.
источник
Я успешно перенес несколько приложений линейной регрессии и квадратичного программирования в Octave.
Линейная регрессия (оператор обратной косой черты) работала без каких-либо корректировок. В случае квадратичного программирования мне пришлось переключиться с fmincon () на sqp () , что дало аналогичные результаты.
Тем не менее, панели инструментов и графический интерфейс в Octave действительно менее зрелые (я потратил так много времени на базовые вещи), хотя за последние два года он быстро прогрессировал.
источник