Чи можна використовувати Octave для вивчення програмування MATLAB?


23

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

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

Таким чином, MATLAB, з одного боку, є надмірно дорогим (-ve), але має багато хорошої документації, навчальних посібників та сценаріїв в Інтернеті (+), тоді як Octave безкоштовний (як у пиві), хоча (зрозуміло) йому бракує вичерпної документації тощо .

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

Будь-які конструктивні відгуки вітаються.


3
Ласкаво просимо, Гомункулус. Нам менше двох місяців і ще не так багато тегів. Я додав тег октави для вас.
Девід Кетчесон

Ще один варіант, якщо ваша мета - просто використовувати обчислювальне програмне забезпечення для особистого використання - це Mathematica. Повна повна версія доступна для особистого користування менше 300 доларів. Я не знаю, чи це у вашому бюджеті чи ні. Але для того, що ви отримуєте за це (така ж версія, як і повна комерційна версія), я думаю, варто того. Примітка: Якщо ви студент, Matlab та Mathematica також доступні для студентів приблизно за однакову ціну.
Насер

1
Одним словом, так. Різниці між мовами досить малі. Документація на Matlab доступна безкоштовно в Інтернеті від Mathworks.com (виробники Matlab). Головне, що вам не вистачить - це графічний інтерфейс Matlab. Хороший GUI для Octave важко знайти. Версія для розробки Octave має графічний інтерфейс, але її важко встановити. Я встановив QtOctave, який я отримав на веб- сайті outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Це працює добре, за винятком того, що завжди є повідомлення про помилку при запуску, і я не можу припинити процес, не вбивши Octave повністю. Я використовую Блокнот ++ ...
Стефан Сміт

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

Оскільки мені не вистачає репутації для коментування, я хочу додати, що твердження у прийнятій відповіді: "Звичайно, є функції MATLAB (зокрема, в наборах інструментів, але у Octave таких немає)" повністю неправильно. Octave має багатий набір пакетів у Octave-forge, які включають кожну функцію пакету Matlab, яка мені коли-небудь потрібна (я працюю в обробці зображень та оптимізації медичних зображень, і мені потрібно досить багато скриньок / пакунків). Крім того, прийнята відповідь не стосується основної проблеми, яка полягає в тому, що жоден код, який
запитуючий запитує,

Відповіді:


24

Відмова: Я іноді дратуюся, коли хтось намагається сказати мені, що вони думають, що я повинен зробити, а не відповідати на запитання, яке я задав. Але я збираюся ризикувати і пропоную вам альтернативу.

Я б запропонував переглянути наукові пакети обчислень Python: numpy , matplotlib та scipy . Разом вони надають вам більшість основних функцій MATLAB (у деяких випадках вони дають вам більше, ніж MATLAB). Вони безкоштовні та з відкритим кодом, і сьогодні можуть мати більш широку базу користувачів, ніж Octave. Значна частина науково-обчислювальної інфраструктури в Python підтримується Enthought Inc. , і я рекомендую вам встановити їх безкоштовний дистрибутив Enthought Python , який включає всі три згадані нами пакунки та багато іншого.

Звичайно, є особливості MATLAB (особливо в наборах інструментів, але у Octave таких немає), яких не вистачає Python. Але я використовую Python у поєднанні з мовами нижчого рівня для більшої частини моєї роботи, і це дозволяє мені програмувати на мові майже так само зручно, як MATLAB, інтерфейс з безліччю корисних пакетів, яких MATLAB не має, і запускати той самий простий для читання код на суперкомп'ютері.

Редагувати : ви також можете спробувати дистрибутив Anaconda Python від Continuum Analytics. Існує безкоштовна версія, яка включає всі перераховані вище пакети та багато іншого.


7
Це залежить від того, хоче Хомункулус навчитися MATLAB, тому що їм потрібно спеціально навчитися MATLAB (наприклад, для роботи), або вони хочуть навчитися MATLAB робити наукові обчислення, і в цьому випадку Python може бути кращим вибором з огляду на фінансові обмеження.
Джефф Оксберрі

3
@DavidKetcheson: Я фактично використовую numpy та matplotlib (оскільки я знайомий з Python). Однак я постійно переживаю багато кодів MATLAB, тому я хотів би мати можливість дізнатися з доступних сценаріїв MATLAB тощо (без роздрібної оплати за ліцензійну плату). Окрім того, що завжди добре мати програмування MATLAB як додаткове перо в моїй шапці - ось чому я думав навчитися MATLAB за допомогою заднього куточка (використовуючи Octave).
Homunculus Reticulli

+1 для Python тут, це також справжня мова програмування :) Хоча я мушу сказати, що я почав з вивчення MATLAB.
boyfarrell

Octave - клон Матлаба з вільною ліцензією. Його синтаксис мови майже повністю сумісний. Python вирішує зовсім іншу проблему, ніж Matlab і Octave. Його синтаксис набагато складніший і багатослівний, оскільки мова є більш універсальною. Для прототипування лінійних систем ви використовуєте Matlab або Octave, тоді для реалізації готового до виробництва програмного забезпечення ви перейдете на python / Java. Перш ніж перейти з Matlab на Python або R, ви повинні зрозуміти, у що ви потрапляєте.
FistOfFury

@FistOfFury Я використовую чистий Python3 для лінійних систем. Для виробництва готового програмного забезпечення ви зазвичай використовуєте або C / Fortran, або вбудований.
перкусія

17

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

Варто ознайомитися з документацією щодо мов та / або приміток про сумісність у FAQ та на вікікнигах . Є також перенесення нотаток .

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


12

Так, ви можете дізнатися MATLAB через Octave. Але синтаксис Octave менш обмежувальний і більше відповідає сучасним мовам сценаріїв. У цьому відношенні MATLAB здається позаду. Дивіться це посилання на вікі MATLAB Програмування / Відмінності між Octave та MATLAB

Ще одна важлива для мене різниця - наявність певних бібліотек для MATLAB, але не для Octave.


9

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

Студентське видання MATLAB - це не так дорого. Якщо ви в університеті, навіть можливо, що у них є ліцензія на сайт. Ви повинні розглянути обидві можливості.


7

У минулому я використовував взаємозамінно Octave та MATLAB на одних і тих же фрагментах коду; У мене не було проблем із сумісністю. Наскільки я можу сказати, основні відмінності:

  1. MATLAB можна складати в байтах і трохи швидше.
  2. Octave може використовувати #або %для коментарів, або Matlab використовує тільки%
  3. Октав дає набагато кращі сюжети.

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

Octave використовує gnuplot як бекенд. Можливо, мені просто подобається, що гнуплот більше виглядає. Єдине конкретне, про що я можу придумати, - це те, що мені не потрібно робити нічого особливого, щоб отримати антиалізинг; це ввімкнено автоматично.
День

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

Ну, я бачу, що ви маєте на увазі під компіляцією. Моя провина.
Reid.Atcheson

Вибачте, але що це означає, що Matlab може бути складений байтом?
користувач17915

6

Це дійсно можливо, особливо якщо ви використовуєте GUI, наприклад GUIOctave . Іншою мовою, яка може виявитися корисною, оскільки для неї написано багато пакунків, є R. Існує також графічний інтерфейс для мови R, який називається RStudio, і документ перекладу між R і MatLab .


5

Щодо вашого запитання:
я б сказав так. Просто тому, що парадигми та принципи однакові. Відмінності в синтаксисі нехтують і їх можна підсумувати на шпаргалці (якщо ви працюєте в основному з MATLAB один день).


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

Що стосується подібності та відмінності між SciLab та MATLAB, цей документ може зацікавити вас: Вступ до Scilab з точки зору користувача Matlab, Ейке Рієч, травень 2010 р. (PDF) .

Ще один плюс для SciLab над MATLAB: запуск та GUI набагато швидший. Я ще не пробував Octave.


1
Я не прихильник Scilab, моє перше враження було, що в синтаксисі та основних функціях (відносно Matlab) було багато невеликих відмінностей, але жоден з дивовижних, які пітон не повинен компенсувати несумісністю.
mdaoust

Гм ... згідно з вашим коментарем та відповіддю Девіда Кетчесона, здається, справді варто спробувати Python.
Torbjörn

5

Практичний приклад:

Я використовую MATLAB на роботі, і я взяв безкоштовний онлайн-клас машинного навчання Стенфорда в минулому семестрі.

Я робила всі домашні завдання в октаві.

Я помітив лише 2 відмінності (я використовував лише основні функціональні можливості):

  • Octave трохи гнучкіше щодо того, які види виразів можна індексувати. Тож якщо ви скористаєтеся цим, ваш код не буде портативним.
  • У моїй установці ділянки pcolor () та image () не працюють для масивів розумного розміру, таких як 1000x1000, маленькі, як 50x50, працюють нормально.

5

Існують деякі тонкі відмінності в інтерпретації Octave мови програмування MATLAB. Octave використовує " endif" і " endwhile" для закриття ifта whileзаяви відповідно. Octave також дозволяє оголошувати функції в командному рядку. Однак слід проаналізувати все, що MATLAB також розбирає, тож якщо ви дотримуєтесь мови програмування MATLAB, вам слід добре.

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


3
Octave із задоволенням сприймає "кінець" для кінця обох циклів, а також циклів, якщо вони є державними.
Білл Барт

4

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

Також майте на увазі, що хоча самі базові мови сумісні (за винятком нових функцій OO в MATLAB), Octave має декілька "доповнень" до синтаксису, як, наприклад, можливість використовувати "! =" Для NEQ, і він також має деякі чергувати поведінку за замовчуванням, наприклад, як вона аналізує вбудовані функції. Це незначні речі, які призведуть до того, що код Octave не запускатиметься в MATLAB безпосередньо біля кажана, якщо ви не подбали про те, щоб не покладатися на таку поведінку.

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


2

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


0

Так, ви можете навчитися Matlab за допомогою Octave. Звичайно, є деякі обмеження.

Октава та Матлаб поділяють значну частину свого синтаксису. Вони є взаємозамінними в цьому відношенні. Досвід роботи в Matlab є більш багатим і зручним для користувачів, особливо під час роботи з графікою, хоча Octave має новий графічний інтерфейс користувача (GUI), який знаходиться в бета-версії. Дві системи, ймовірно, збільшаться далі, оскільки покращиться графічне середовище для Octave.

На курсі Coursera існує безліч безкоштовних курсів, які дають вам безкоштовну тимчасову ліцензію студента Matlab на час курсу. Шукайте курси машинного навчання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.