Відмінності між Octave та MATLAB? [зачинено]


272

Я програміст, який знає Python, Ruby та деяких C, які намагаються вирішити, чи слід вивчати GNU Octave чи Matlab. Я знаю, що вони мають багато спільного , але мені незрозуміло, наскільки схожий синтаксис або навіть структури даних. Усі кажуть, що вони "схожі", але ніхто не каже, наскільки вони схожі насправді. Наведене вище посилання показує кілька прикладів, коли вони синтаксично схожі або однакові, чи це правда для всієї мови?

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

Крім того, чи варто Matlab варто? У мене немає багато грошей, але якщо є важливі відмінності в бібліотеках чи в інших місцях, я впевнений, що міг би знайти гроші.


8
Оскільки ви студент, варто перевірити, чи ваша школа надає студентам математику безкоштовно / дешево; і мої середні, і середні школи роблять це, що полегшує рішення про те, щоб поїхати з matlab.
Дугал

23
Так, але коли він покине університет і поїде до якогось науково-дослідного центру, йому доведеться купувати його і до того часу буде знати лише Matlab, а не альтернативи. Отже, думаючи довгостроково, якщо ти хочеш стати носієм науки, яка, схоже, він хоче, не варто ігнорувати це. Не кажучи вже про те, що такі ліцензії зазвичай не можуть бути використані і для кластерів.
carandraug

2
У той час як ви студент, ви маєте змогу отримати ліцензію на Matlab приблизно за 100 доларів (USD). Зрозуміло, якщо ви хочете деякі інші набори інструментів, це додаткові 29 доларів за коробку інструментів. Отже, не знаючи, які інструментальні скриньки ви хочете / знадобиться, важко виправдати витрати.
Бен А.

23
+1 Я щойно почав вивчати Octave сьогодні, тому що зараз я вивчаю машинне навчання, а вчитель рекомендував вивчати Octave (тому що це безкоштовно, тому що METLAB дорогий і тому, що студент буде набагато продуктивнішим, отримуючи машинний алгоритм для роботи спочатку використовуйте або Octave, або METLAB, потім, як тільки вона працює, потім перейдіть на Java або C ++)
Ентоні

7
Я б радив вам використовувати python + opencv
gukoff

Відповіді:


235

Замість того, щоб надати вам повний перелік відмінностей, я розповім вам про це.

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

Таке ставлення змушує Октава повністю втрачати своє призначення. Ідея октава (або став , я повинен сказати, см коментарі нижче) , щоб мати альтернативу з відкритим вихідним кодом для запуску м-код. Якщо вона намагається бути «кращою», вона, таким чином, намагається бути іншою , що не відповідає причинам, якими вона користується. На моєму досвіді запуск матеріалів, розроблених в MATLAB, ніколи не працює за один раз, за ​​винятком справді простих, дуже коротких речей - Для будь-якої значущої функції мені завжди потрібно перекласти багато матеріалів, перш ніж вона працює в Octave, якщо не переписувати його з нуля. Як це краще , я справді не бачу ...

Крім того, якщо ви вивчаєте Octave, в Octave дозволено багато синтаксису, який заборонено в MATLAB. Значення - код, написаний в Octave, часто не працює в MATLAB без численних перетворень. Це також не сумісне навпаки!

Я можу продовжити: У MathWorks є багато наборів інструментів для MATLAB, є Simulink та пов'язані з ним продукти, за які в Octave дійсно немає еквівалента (так, за все це доведеться платити. Але часто ваш роботодавець / школа робить це все одно і, ну, принаймні, це існує ), доведена відповідність декільком галузевим стандартам, інструментам тестування, інструментам перевірки, системам управління вимогами, генерації звітів, значно більшій базі спільнот і користувачів, тощо. тощо. тощо. MATLAB - лише невелика частина чогось набагато більшого. Октава - це просто Октава.

Отже, моя порада:

  • Дізнайтеся, чи ваша школа заплатить за MATLAB. Часто вони будуть.
  • Якщо вони цього не роблять, і якщо ви можете зібрати гроші разом, купіть MATLAB і навчіться правильно ним користуватися. Зрештою, це краще рішення.
  • Якщо ви дійсно не можете отримати гроші - скористайтеся Octave, але вивчіть синтаксис MATLAB і тримайтеся подалі від синтаксису, призначеного лише для Octave. (див. примітку)

Чому цей останній пункт? Тому що в науках часто існують великі кодові бази, повністю написані в MATLAB. Є професори, інженери, студенти, професійні кодери, багато і багато людей, які знають усі хитромудрі деталі MATLAB, і не стільки Octave.

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

NB - якщо все downvoters могли б просто залишити коментар зі своїми аргументами і причини незгоди зі мною, що було б здорово :)

Примітка: Octave можна запускати в "традиційному режимі" (включаючи - традиційний прапор під час запуску Octave), що змушує видавати помилку, коли використовується певний синтаксис, що використовується лише для Octave.


25
Про відсутність JIT він уже реалізований на розробці версії Octave. Я не знаю, коли це буде випущено, але я створив його, і різниця величезна для loopy-коду. І щоб триматися подалі від синтаксису лише Octave, є - традиційний варіант Octave. Я не кажу, що код Matlab завжди працює в Octave, але це стає набагато кращим з кожним випуском, і сумісність є одним із їх пріоритетів (не кажучи вже про те, що навіть різні версії Matlab мають достатньо несумісності між ними).
carandraug

14
І те, що ви називаєте, дотримується вищого синтаксису ... якби ви мали свободу змінювати Matlab, додавати додатковий синтаксис чи інші функції, чи не так? Це функції, які користувачі реалізували, і вони не порушують сумісності. Частіше, ні, нові речі відхиляються на підставі цього. Ідея полягає в тому, що мова Matlab є підмножиною мови Octave. Якщо ви вважаєте, що ідея є приголомшливою, тоді вам слід приєднатися, оскільки це проект спільноти та має функції, які турбує громада.
carandraug

19
@RodyOldenhuis це не повинен бути клоном. Розвиток Октав не почати цей шлях, він тільки що отримав все більше і більше штовхнув в цьому напрямку з боку користувачів , які тримають подали патчі для нього sciencedirect.com/science/article/pii/S0959152412000911
carandraug

9
Чи створив будь-який інструмент програмування EVER успішно відповідальність за помилку?
Мартін Беккет

6
@carandraug: ну, до біса. Коректність важливіша за все це :)
Роді Олденхуїс

79

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

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

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

Я оброблю зображення лише в Octave і виявляю, що пакет зображень відповідає моїм потребам. Я не знаю, однак, що буде вашим. Тож моя відповідь на те, чи варто коштувати, - ні, але, безумовно, інші не погоджуються.


23

MATLAB - це, насамперед, комерційна пропозиція. Тому все в MATLAB в значній мірі працює поза коробкою. Вся основна функціональність є надійною, і якщо ви працюєте над спеціальним проектом, то MATLAB, ймовірно, має надбудову, вони можуть продати вас, що додасть багато додаткових .m-файлів .m для вас. Це не дешево, але це працює, і це буде без проблем налагоджено роботу.

Octave завжди показує своє коріння з відкритим кодом, інформація, яка хоче бути вільною. Це безкоштовно, і це нагадає вам, що безкоштовно при кожній нагоді. Він розроблений волонтерами, які з пристрастю ненавидять Windows. Тому Octave працює з Windows з зухвало. Досить дивно, що стільки ж функцій MATLAB існує, як і вони.

Але ось руб. Кожен раз, коли ви намагаєтесь зробити щось більше, ніж тривіально складне, Октава раптово розбивається на тонкі і важкі для розуміння способи. На жаль, драйвер терміналу мав переповнення десь глибоко в шарі OpenGL. Ви не можете надрукувати На жаль, графіки малюнків роблять дивні речі своїми шрифтами. Успіху з’ясувавши чому. На жаль, існує деяка прихована залежність між Octave та деяким іншим незрозумілим бітом вільного програмного забезпечення, тому він не збирається. Успіху розібравшись, що це таке.

І відповідь Октави - це гей! Це безкоштовне програмне забезпечення! У вас є весь вихідний код, ви можете виправити всі ці помилки самостійно! Можливо, якби у мене було нескінченний час і ресурси на руках, я би могла витратити весь свій час на виправлення помилок у вільному програмному забезпеченні, але особисто я цього не роблю. Якби я працював у наукових колах, я міг би.

Отже, в основі, питання про те, чи вибрати MATLAB чи Octave, зводиться до одного питання. Цікаво, що це питання завжди одне й те саме, коли вибирати між комерційними та безкоштовними варіантами програмного забезпечення.

І питання:

У вас більше грошей, ніж часу?


2
Інше питання: що робити компаніям, де ви можете закінчити роботу? Можливо, Матлаб з тих же причин.
користувач276648

14

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

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

Я б сказав, що використовуйте MATLAB, хоча ви можете використовувати академічну версію, але перехід на Octave повинен бути безпроблемним, оскільки вони використовують той самий синтаксис.

Нарешті, є проблема SIMULINK. Якщо ви хочете зайнятись моделюванням або дизайном системи управління (мабуть, мільйон інших видів використання) SIMULINK є фантастичним та постачається з MATLAB. Я не думаю, що будь-який інший наближається до цього, хоча Scilab, мабуть, «хороша» альтернатива з відкритим кодом, я не пробував цього.

Мир.


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

"вони використовують той самий синтаксис" Ні, вони ні.
Кріс Луенго

8

Я тільки почав використовувати Octave. І я бачив, як люди використовують Matlab. І одна з головних відмінностей, як згадувалося вище, полягає в тому, що Octave має інтерфейс командного рядка, а Matlab має графічний інтерфейс. На мою думку, графічний інтерфейс дуже корисний для налагодження. В Ocatve вам потрібно виконати команди, щоб побачити, яка довжина матриці і т.д., але в Matlab це добре показує все, використовуючи хороший інтерфейс. Але Octave вільний і хороший для основних завдань, які я виконую. Якщо ви впевнені, що збираєтеся робити лише основні речі, або не знаєте, що вам потрібно зараз, тоді вирушайте на Octave. Ви можете заплатити за Matlab, коли справді відчуєте потребу.


2
У Octave є графічний інтерфейс, який зараз знаходиться в бета-версії. Використовуйте команду --force-gui при виконанні октави.
ig343

6
... і починаючи з версії 4 Octave, GUI - це інтерфейс користувача за замовчуванням.
Руслан

7

Річ робить Matlab настільки популярним та особливим - це відмінні набори інструментів для різних дисциплін. Оскільки ваша основна мета - навчитися Matlab, тому зовсім не відрізняється, якщо ви працюєте з Octave або Matlab!

Просто поїздка та покупка Matlab без будь-якого крутого набору інструментів (що в основному залежить від вашого основного) - насправді не розумні витрати!

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


4

Я не хотів би додати відповідь Роді Олденхуйсу не так багато. Я зазвичай дотримуюся стратегії, згідно з якою всі функції, які я пишу, повинні виконуватись у Matlab.

Деякі конкретні функції я тестую в обох системах для наступних випадків використання:

a) для октави не потрібен сервер ліцензій - наприклад, якщо ваша установа не підтримує локальні ліцензії. Я використовував його один раз у ситуації, коли система, в якій я використовував сценарій, не мала підключення до Інтернету і збиралася працювати дуже довго (в кутку в лабораторії) і використовувалася багатьма різними користувачами. Зауваження: мова йде не про вартість ліцензії, а про технічні проблеми, пов'язані з цим.

b) Octave підтримує інші платформи, наприклад, Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - що може стати в нагоді.


3

Вкладені функції та закриття тепер підтримуються багатьма мовами, включаючи MATLAB. JavaScript рекламує закриття як принцип дизайну першого класу.

На жаль, Octave не підтримує закриття (вкладені функції з лексичним визначенням).

Згідно з http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html, може скластись навіть враження, що розробники не хочуть або не можуть виправити це правильно.

Це порушить багато коду, в обох напрямках. Ніякого вирішення.


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

@MayeulC Більш універсальна частина насправді скорочує обидва способи.
Вольфганг Куен

0

Октава і матлаб мають багато подібності. Але Octave - це інтерфейс командного рядка. Ви повинні ввести кожну команду в командному рядку, тоді як matlab постачається з найкращим графічним інтерфейсом. Я рекомендую спочатку скористатися версією matlab student; після засвоєння основних уроків перментально використовуйте гну октаву. Зараз gnu octave поставляється з gui, але це вже версія для розробки. Для gnu октави є кілька переднього кінця gui, наприклад guioctave, xoctave (не безкоштовно), DomainMath IDE тощо.


2
версія розробки октави (3.7.5 має бути) поставляється з нативним gui, що виглядає досить приємно!
kjetil b halvorsen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.