Чому / коли я повинен віддавати перевагу MATLAB перед октавою?


82

У нашій оперативній операції нам потрібно прототипувати алгоритми якоюсь мовою вищого рівня, перш ніж здійснювати реалізацію C на вбудованому обладнанні.

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

Чи є якась особлива причина цього не робити? Чи порушимо якусь сумісність, особливо якщо у нас є зовнішні партнери, які наполягають на використанні MATLAB? Чи можемо очікувати покарання за результати?


7
Ви повинні врахувати витрати на міграцію та навчання.
Даніель Моура,

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

5
@Mikhail: Через взаємодію з партнерами, які використовують Matlab.
Йонас,

2
@Jonas: і зовнішніх партнерів можна було б переконати ... Якщо вони побачать, що всі говорять про міграцію на Python ...
Михайло

Це питання все ще часто виникає у відповідних темах, але воно жахливо застаріло зараз (10+ років).
Tasos Papastylianou

Відповіді:


52

У 2008 році я спробував зробити те саме. Я швидко помітив наступні стопори шоу:

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

Але я повинен сказати, що мене загалом вразило, наскільки сумісний октав з Matlab. Якщо ваше використання Matlab є базовим, вам може пощастити. Нарешті це було в 2008 році, за два роки все може сильно змінитися.


8
Не думаю, що проблема пов’язана з користувачами MATLAB. Чудово, що існує альтернатива FOSS, і люди, які хочуть працювати над такими зусиллями, роблять це. Люди займаються своїм часом, чим завгодно. Критикувати користувачів даної програми по-дитячому.
carlosdc

2
Для всіх, хто зацікавлений, перейдіть за посиланням для інсталятора Octave 3.8 Windows: mxeoctave.osuv.de
juliohm

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

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

24

Просто від маківки:

  1. Є багато наборів інструментів, яких у Октави немає, як я виявив, коли намагався виконати домашнє завдання на курсі машинного навчання два семестри тому.
  2. Октава має набагато гірший налагоджувач. Працювати з цим було майже неможливо.
  3. Matlab набагато швидший для багатьох видів операцій.
  4. Сюжети Matlab набагато приємніші.
  5. Октава не має власного графічного інтерфейсу. Існують графічні інтерфейси для Octave, але вони поступаються рідному Matlab.

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

15

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

Щодо октави: мене дуже вразила схожість октавного синтаксису. Мені не зайняло багато часу, щоб перенести мої сценарії MATLAB до октави. У той час, як у мене є особлива проблема з друком маркерів спільно з панеллю помилок, яку Ярно Раджахалме виправив на набл і змінив розмір шрифту xtick, що я вирішив у відповіді на запитання на nabble. Тож у нього все ще є деякі помилки, які, доклавши певних зусиль, можна подолати. Якщо у вас виникли проблеми, ви можете спробувати форум розсилки nabble: help-octave@octave.org. До речі, моя команда не може адаптуватися (зручно для користувача) до нього так, як вони адаптуються до MATLAB, тому ми все ще використовуємо MATLAB. Оскільки MATLAB побудований під gnuplot, іншим способом виправлення помилок є редагування сформованого файлу gnuplot. Найкращою IDE, яку я знайшов, була QtOctave, яку я зробив короткий огляд у "

Щодо R: згідно з дослідженням, проведеним SciViews, продуктивність R перевершує MATLAB та октаву. Я не маю великого досвіду з Р. Я вивчав пакет mclust, щоб написати розділ вікікниги про кластеризацію ЕМ у Р. До речі, вони, здається, мають дуже активну спільноту. Тож ви можете знайти сторонні пакети пропозицій, які не є настільки стандартизованими в ІМО. Найкращим IDE, який я знайшов, був плагін StatET для eclipse, JGR (Java GUI для R) та emacs. Незважаючи на тимчасові витрати на вивчення нової мови програмування, якби я вибрав платформу з відкритим кодом для створення експериментальної графіки та аналізу деяких даних, я спробував би R.


10

Октава має кілька синтаксичних удосконалень щодо matlab, наприклад, ви можете сказати endif endforі endfunctionзамість простоend , які роблять налагодження набагато простіше.

Octave також дозволяє динамічно генерувати функції та мати кілька функцій, визначених у сценаріях та файлі функцій. Що набагато приємніше, ніж підхід matlab до одного файлу і однієї функції.

Нарешті, у октави є parcellfunі pararrayfunякі є дуже потужними інструментами паралельної обробки, яких Matlab повністю не вистачає. Існуєparfor in 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

1
дуже погано, (портативна) паралельна версія cellfun / arrayfunc здається гарною ідеєю ... Можливо, MATLAB повинна це зробити теж :)
Амро

@ user1240280: можливість визначати функції в сценарії - це IMHO величезна перевага Octave перед Matlab. Це дозволяє вам писати цілу програму модульним способом і зберігати її в одному файлі, щоб ви могли легко надіслати її собі чи іншим. Але відсутність у Октави графічного інтерфейсу є великим недоліком.
Стефан Сміт

@stefan smith: Октава тепер має власний графічний інтерфейс, все ще експериментальний, але з мого недавнього досвіду він цілком корисний і більш-менш стабільний. ви можете спробувати цеoctave --force-gui
Legionair

9

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


6
Чи має Октава еквівалент путівника? Тому я отримав голосування проти?
Doresoom

8

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

  • Він має синтаксис, який дозволить вам писати код, трохи ближчий до C. тобто + =, - =, значення параметрів функції за замовчуванням, літеральні рядки з подвійними лапками тощо ...

  • Якщо припустити, що ваші чіпи повільніші за настільний процесор, швидкість, швидше за все, не буде проблемою.

  • Оскільки він запускається набагато швидше, ніж matlab, практичніше інтегрувати його в сценарії оболонки для тестування.

  • Для створення прототипів побудова графіку є більш ніж достатнім; люди просто звикли до стилю MATLAB.

  • Відносна відсутність наборів інструментів не є великою проблемою, оскільки вони все одно не будуть доступні на вашій цільовій платформі.

Я використовую і те, і інше, коли переключаюся, я пропускаю функції іншого.


6

Цікаво подивитися, як альтернатива з відкритим кодом працює для статистики, але не для чисельного аналізу. R (октава статистики) на сьогоднішній день є набагато популярнішим, ніж комерційний S-plus (матлаб статистики). Питання, згадані як причини не відмовлятися від matlab, знайдені в інших відповідях, також стосувались R. Але все-таки всі тільки почали робити свій внесок, і тепер R - це стандарт, з кращою графікою, кращими пакетами та відсутністю блокування постачальника.

Тож ви могли б також віддати перевагу октаві перед матлабом, якщо зможете переступити дилему в’язнів.


4
Вам слід було це написати в коментарі, а не у відповіді.
Діма

5

На MATLAB є хороша Вікікнига зі списком відмінностей між MATLAB та Octave .

З мого досвіду, основний MATLAB добре перенесений на Octave, але набори інструментів мають різний рівень сумісності, тому ваше рішення залежить від того, що саме ви намагаєтеся кодувати.

Деякі речі, яких бракує Octave, AFAIK, - це тісна інтеграція з кодом .NET та конструктор графічного інтерфейсу, guide (хоча існує багато інших інструментів побудови графічного інтерфейсу, які Octave може використовувати).

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


3

Зверніть увагу, що Octave підтримує мовні конструкції, яких немає у Matlab (наприклад, оператори автоматичного збільшення, оператори do-till тощо). Це іноді дратує код порту, розроблений (кимось, хто не знайомий з обмеженнями Matlab) на Octave для середовища Matlab.

Є деякі інші обмеження / відмінності у розділі поширених запитань щодо октави .


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.