В нашей скудной операции нам нужно прототипировать алгоритмы на каком-нибудь языке более высокого уровня, прежде чем переходить к реализации C на встроенном оборудовании.
До сих пор мы использовали MATLAB для этого, но затраты на лицензирование начинают снижаться. Мы рассматриваем возможность переноса нашего кода MATLAB на Octave.
Есть ли какая-то особая причина не этого делать? Сможем ли мы нарушить совместимость, особенно если у нас есть внешние партнеры, которые настаивают на использовании MATLAB? Есть ли какие-либо потери производительности, которые мы можем ожидать?
В 2008 году я попытался сделать то же самое. Я быстро заметил следующие препятствия:
Но я должен сказать, что меня в целом впечатлило, насколько Octave совместим с Matlab. Если вы используете Matlab в основном, вам может повезти. Наконец-то это было в 2008 году, через два года многое может измениться.
Просто пришло в голову:
Интересно посмотреть, как альтернатива с открытым исходным кодом работает для статистики, но не для численного анализа. R (октава статистики) в настоящее время гораздо популярнее коммерческого S-plus (математическая лаборатория статистики). Проблемы, упомянутые в качестве причин не отказываться от Matlab, найденные в других ответах, также применимы к R. Но все же все только начали вносить свой вклад, и теперь R является стандартом, с лучшей графикой, лучшими пакетами и без привязки к поставщику.
Так что вы могли бы предпочесть октаву матлабу, если можете перешагнуть дилемму заключенных.
Я также тестировал октаву и R.
По поводу октавы: Меня очень впечатлило схожесть октавного синтаксиса. Мне не потребовалось много времени, чтобы перенести мои скрипты MATLAB в октаву. Между тем у меня есть особая проблема с печатью маркеров вместе с панелью ошибок, которая была исправлена Ярно Раджахалмом на nabble, и с изменением размера шрифта xtick, который я получил в ответе на вопрос на nabble. Так что в нем все еще есть некоторые ошибки, которые можно исправить. Если у вас возникнут проблемы, вы можете попробовать nabble mailing forum: (скрыто). Кстати, моя команда не может адаптироваться (удобная для пользователя) к нему, например, они адаптируются к MATLAB, поэтому мы все еще используем MATLAB. Поскольку MATLAB построен под gnuplot, другим способом исправить его ошибки является редактирование сгенерированного файла gnuplot. Лучшей IDE, которую я нашел для нее, была QtOctave, которую я сделал краткий обзор в «Помните блог».
Что касается R: , согласно исследованию, проведенному SciViews, производительность R превосходит MATLAB и октаву. У меня нет большого опыта работы с R. Я изучил пакет mclust, чтобы написать главу в викибуке об ЭМ кластеризации в R. Между прочим, у них, похоже, очень активное сообщество. Таким образом, вы можете найти сторонние пакеты предложений, которые не стандартизированы ИМО. Лучшей IDE, которую я нашел, был плагин StatET для eclipse, JGR (Java GUI для R) и emacs. Несмотря на временные затраты на изучение нового языка программирования, если бы я выбрал платформу с открытым исходным кодом для графического отображения эксперимента и некоторого анализа данных, я бы попробовал R.
Вы определенно должны предпочесть Matlab Octave, если можете себе это позволить.
У меня не было большого опыта работы с Octave, но я бы ожидал проблем, если ваш код использует инструментальные панели Matlab, причудливые графики или руководство Matlab.
Я бы ожидал, что это будет как OpenOffice против MS Office. В основном совместимы, но отличаются настолько, что у вас будет болеть голова.
Есть хорошая WikiBook по MATLAB с списком различий между MATLAB и Octave.
По моему опыту, ядро MATLAB хорошо переносится в Octave, но наборы инструментов имеют разный уровень совместимости, поэтому ваше решение зависит от того, что именно вы пытаетесь написать.
Некоторые вещи, которых не хватает Octave, AFAIK, это тесная интеграция с кодом .NET и средство создания графического интерфейса, guide
(хотя есть много других средств создания графического интерфейса, которые может использовать Octave).
Кроме того, как отмечали другие, большая часть того, за что вы платите в MATLAB, - это удобный интерфейс и инструменты отладки/профилирования. Опытные программисты, вероятно, справятся с альтернативами, но новички могут столкнуться с трудностями.
Octave не имеет руководства
, что делает создание графического интерфейса очень простым. Я регулярно использую руководство по созданию инструментов для моих коллег, не использующих MATLAB.