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

23

Я хочу изучать программирование на MATLAB, чтобы я мог проводить некоторые исследования / анализ самостоятельно, а также, чтобы я мог изучать / модифицировать некоторые скрипты MATLAB, которые я нашел в Интернете и т. Д.

Однако проблема в том, что я не могу позволить себе MATLAB. Как я слышал, GNU Octave вполне совместим с MATLAB. Проблема с Octave заключается в том, что документация очень скудная.

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

Я думаю о загрузке и установке Octave, но использую документацию MATLAB (и скрипты), чтобы помочь мне начать работу. Я знаю, что между Octave и MATLAB есть некоторые различия - я пытаюсь выяснить, достаточно ли велики эти различия, чтобы помешать моим усилиям (эффективно) «изучить MATLAB с помощью Octave».

Любые конструктивные отзывы приветствуются.

Homunculus Reticulli
источник
3
Добро пожаловать, Гомункулус. Нам меньше двух месяцев, и у нас пока нет много тегов. Я добавил октавный тег для вас.
Дэвид Кетчесон
Другой вариант, если ваша цель состоит в том, чтобы просто использовать вычислительное программное обеспечение для личного использования, - это Mathematica. Полная полная версия доступна для личного пользования менее чем за 300 долларов. Я не знаю, входит ли это в ваш бюджет или нет. Но то, что каждый получает за это (та же версия, что и полная коммерческая версия), стоит того, я бы подумал. примечание: если вы студент, то Matlab и Mathematica также доступны для студентов примерно по той же цене.
Насер
1
Одним словом да. Различия между языками довольно малы. Документация для Matlab доступна бесплатно в Интернете на Mathworks.com (создатели Matlab). Главное, что вы пропустите, это графический интерфейс Matlab. Трудно найти хороший графический интерфейс для Octave. Разрабатываемая версия Octave имеет графический интерфейс, но ее сложно установить. Я установил QtOctave, который я получил по адресу outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Он работает нормально, за исключением того, что всегда появляется сообщение об ошибке при запуске, и я не могу завершить процесс, не убив полностью Octave. Я использую Блокнот ++ ...
Стефан Смит
... вместо редактора QtOctave, и кажется, что он работает лучше. Другое дело, что различия между Octave и Matlab, какими бы они ни были, подробно документированы на бесплатных веб-сайтах.
Стефан Смит
Поскольку у меня недостаточно репутации, чтобы комментировать, я хотел бы добавить, что утверждение в принятом ответе: «Конечно, есть функции MATLAB (особенно в наборах инструментов, но у Octave их нет)» полностью неправильно. Octave имеет богатый набор пакетов в Octave-forge, которые включают в себя все функции пакета Matlab, которые мне когда-либо были необходимы (я занимаюсь обработкой и оптимизацией изображений для медицинских изображений, и мне нужно немало наборов инструментов / пакетов). Кроме того , принятый ответ не решает главную проблему, которая является то , что нет кода , что запись спрашивающий не будет использоваться в лабораториях или indivi
barnhillec

Ответы:

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).
Гомункул Ретикулли
+1 для Python, это тоже настоящий язык программирования :) Хотя я должен сказать, что я начал с изучения MATLAB.
Boyfarrell
Octave - клон Matlab со свободной лицензией. Его синтаксис языка почти полностью совместим. 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. Октав может использовать либо #или %для комментариев, Matlab использует только%
  3. Октава дает гораздо лучшие сюжеты.
Дэн
источник
1
Мне было бы интересно услышать, в каком отношении Octave создает намного лучшие графики (не то, что мне особенно нравятся графики MATLAB ...).
Дирк
Octave использует gnuplot в качестве бэкэнда. Может быть, просто мне больше нравится, как выглядит gnuplot. Единственное, о чем я могу думать, это то, что мне не нужно делать ничего особенного, чтобы получить сглаживание; это автоматически включено.
Дан
1
Мой опыт построения Octave был неоднозначным, и после изучения чего-то с MATLAB качество графики, которое я получил, теперь очень хорошее. Может быть, у вас есть примеры, где Octave превосходит Matab по этому показателю? Асо, байтовый? Вы говорите о кодере MATLAB? Вы не можете просто ввести произвольный код MATLAB в этот инструмент, и, насколько я помню, это довольно дорогой инструмент, который, конечно же, недоступен в лицензионной версии для студентов.
Reid.Atcheson
Ой, я понимаю, что вы имеете в виду для компиляции. Моя вина.
Reid.Atcheson
Извините, но что это значит, что Matlab может быть скомпилирован байтово?
user17915
6

Это действительно возможно, особенно если вы используете GUI, такой как GUIOctave . Другим языком, который может оказаться полезным, поскольку для него написано много пакетов, является R. Существует также графический интерфейс для языка R, называемый RStudio, и документ перевода между R и MatLab .

Жан-Виктор Кот
источник
5

По поводу вашего вопроса:
я бы сказал да. Просто потому, что парадигмы и принципы совпадают. Различия в синтаксисе пренебрежимы и могут быть обобщены в шпаргалке (если вы работаете в основном с MATLAB один день).


Еще одно предложение для альтернативы: в
качестве альтернативы MATLAB я использую SciLab . Он бесплатный как Octave, имеет приличное сообщество, предоставляющее помощь и поддержку, и его документация довольно хорошая. Встроенная документация и справка по функциям аналогичны документации MATLAB. (Что мне больше всего нравится, так это возможность выполнять примеры одним щелчком мыши). Синтаксис похож на MATLAB также.

Что касается сходства и различий между SciLab и MATLAB, этот документ может быть вам интересен: Введение в Scilab с точки зрения пользователя Matlab, Эйке Ритч, май 2010 г. (PDF) .

Еще один плюс для SciLab по сравнению с MATLAB: запуск и графический интерфейс намного быстрее. Я еще не пробовал Octave.

Torbjörn
источник
1
Я не фанат Scilab, мое первое впечатление было, что было много небольших различий в синтаксисе и основных функциях (по сравнению с Matlab), но ни одно из того удивительного, что python не должен компенсировать несовместимость.
mdaoust
Хм ... в соответствии с вашим комментарием и ответом Дэвида Кетчона, кажется, действительно стоит попробовать Python.
Торбьерн
5

Практический пример:

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

Я сделал всю домашнюю работу в октаве.

Я заметил только два отличия (я использовал только основные функции):

  • Octave немного более гибок в отношении того, какие виды выражений можно индексировать. Так что, если вы воспользуетесь этим, ваш код не будет переносимым.
  • В моей установке графики pcolor () и image () не работают для массивов разумного размера, таких как 1000x1000, маленькие, например, 50x50, работают нормально.
mdaoust
источник
5

В интерпретации Octave языка программирования MATLAB есть некоторые тонкие различия. Octave использует " endif" и " endwhile" для закрытия ifи whileоператоров соответственно. Octave также позволяет объявлять функции в командной строке. Однако он должен анализировать все, что анализирует MATLAB, поэтому, если вы будете придерживаться языка программирования MATLAB, у вас все будет хорошо.

Имейте в виду, что самые большие различия между этими двумя программами заключаются во встроенных функциях, которые выполняют большую часть числовых операций, например " quad", " ode15s" и тому подобное. Однако все эти функции должны быть хорошо документированы при использовании команды « help». Существуют также списки рассылки для Octave, если у вас есть более конкретные вопросы, которые не включены в онлайн-справку.

Pedro
источник
3
Octave более чем счастлив принять «конец» для конца обоих циклов while и if statemtents.
Билл Барт
4

Да, вы можете, я сделал. Однако большая часть возможностей MATLAB поставляется с некоторыми из его чрезвычайно простых в использовании наборов инструментов и встроенных функций, которые могут иметь или не иметь эквиваленты в Octave.

Также имейте в виду, что хотя сами базовые языки совместимы (за исключением новых функций OO в MATLAB), у Octave есть несколько «дополнений» к синтаксису, например, возможность использовать «! =» Для NEQ, а также некоторые альтернативное поведение по умолчанию, например, как он анализирует встроенные функции. Это незначительные вещи, которые приведут к тому, что код Octave не будет запускаться в MATLAB сразу же, если вы не позаботились о том, чтобы не полагаться на такое поведение.

Кроме того, MATLAB - это полноценная вычислительная среда, а не просто язык, который взаимодействует с оптимизированными процедурами линейной алгебры. Так что то, что вы узнаете из Octave, пойдет так далеко. Вы будете работать в MATLAB, если вы хорошо владеете Octave, но вы не будете настолько продуктивны, как MATLAB.

Reid.Atcheson
источник
2

Лучший бесплатный язык с синтаксисом, похожим на MATLAB, - это Julia. Это также быстрее и имеет более обширную систему пакетов (среди прочих причин, почему это лучше ...), но синтаксис линейной алгебры практически одинаков (многие алгоритмы можно преобразовать в MATLAB, изменив A[i]для индексации наA(i) ). Я считаю, что это лучший язык для изучения прямо сейчас, и вы «случайно узнаете MATLAB», просто используя его.

Крис Ракауцкас
источник
0

Да, вы можете изучать Matlab, используя Octave. Конечно, есть некоторые ограничения.

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

Существует множество бесплатных курсов на Coursera, которые дают вам бесплатную временную студенческую лицензию Matlab на время курса. Поиск курсов машинного обучения.

Кулак ярости
источник