Я программист, который знает Python, Ruby и немного Си, который пытается решить, изучать ли GNU Octave или Matlab. Я знаю, что у них много общего , но мне не ясно, насколько похож синтаксис или даже структуры данных. Все говорят, что они «похожи», но никто не говорит, насколько они на самом деле похожи. Приведенная выше ссылка показывает несколько примеров, где они синтаксически похожи или идентичны, верно ли это для всего языка?
Я пытаюсь изучать язык в целом, чтобы делать больше научных вычислений, возможно, используя некоторые библиотеки анализа изображений. Я знаю, что есть много других языков, на которых я мог бы программировать, но мои советники говорят, что знание MATLAB или Octave имеет решающее значение в науке.
Кроме того, Matlab стоит своих денег? У меня не много денег, но если в библиотеках или где-то еще есть важные различия, я уверен, что смогу найти деньги.
Ответы:
Вместо того, чтобы предоставить вам полный список различий, я выскажу свое мнение по этому вопросу.
Если вы внимательно прочитаете предоставленную вами вики-страницу, вы часто увидите предложения типа «Octave поддерживает оба, а MATLAB требует первого» и т. Д. Это показывает, что разработчики Octave пытаются сделать синтаксис Octave «превосходящим» по сравнению с MATLAB.
Такое отношение заставляет Октаву полностью потерять свою цель. Идея октава (или стал , я должен сказать, см комментарии ниже) , чтобы иметь альтернативу с открытым исходным кодом для запуска м-код. Если он пытается быть «лучше», он, таким образом, старается быть другим , что не соответствует причинам, по которым большинство людей его используют. По моему опыту, запуск вещей, разработанных в MATLAB, никогда не работает за один раз, за исключением действительно простых, действительно коротких вещей - для любой значительной функции мне всегда приходится переводить много вещей, прежде чем они будут работать в Octave, если не переписывай это с нуля. Как это лучше , я действительно не вижу ...
Кроме того, если вы изучаете Octave, в Octave разрешен большой синтаксис, который не разрешен в MATLAB. Значение - код, написанный на Octave, часто не работает в MATLAB без многочисленных преобразований. Это также не совместимо наоборот!
Я мог бы продолжить: у MathWorks есть много наборов инструментов для MATLAB, есть Simulink и связанные с ним продукты, для которых на самом деле нет эквивалента в Octave (да, вам придется платить за все это. Но зачастую ваш работодатель / школа делает это в любом случае и, по крайней мере, оно существует ), доказанное соответствие нескольким отраслевым стандартам, инструментам тестирования, инструментам проверки, системам управления требованиями, генерации отчетов, значительно большему количеству пользователей и пользователей и т. д. и т. д. и т. д. MATLAB - это лишь небольшая часть чего-то гораздо большего. Октава это ... просто Октава.
Итак, мой совет:
Почему этот последний пункт? Потому что в науках часто бывают большие кодовые базы, полностью написанные на MATLAB. Есть профессора, инженеры, студенты, профессиональные программисты, много-много людей, которые знакомы со всеми сложными мрачными деталями MATLAB, и не так уж много о Octave.
Если вы получаете новую работу, и все в вашем новом офисе говорят по-испански, то довольно глупо требовать от всех, чтобы они начали говорить по-английски, просто потому, что вы не говорите по-испански. То же самое с MATLAB и Octave.
NB - если бы все downvoters могли просто оставить комментарий со своими аргументами и причинами несогласия со мной, это было бы здорово :)
источник
Более полная ссылка на список различий есть в FAQ Октавы . Теоретически весь код, который выполняется в Matlab, должен выполняться в Octave, а разработчики Octave рассматривают несовместимость с Matlab как ошибки. Таким образом, ответ на ваш первый вопрос - «да» в теории. Конечно, все программы имеют ошибки, ни Octave, ни Matlab (да, Matlab тоже) не защищены от них. Вы можете сообщить о них, и кто-то попытается исправить их
В Octave также есть дополнительные функции , большинство из которых - дополнительный синтаксис, который, на мой взгляд, делает код более читабельным и более понятным, особенно если вы привыкли к другим языкам программирования.
Но в Октаве есть нечто большее, чем просто денежные затраты. Octave бесплатен также в смысле свободы, он свободен, но я не думаю, что это место, чтобы разглагольствовать о свободе программного обеспечения.
Я делаю обработку изображений только в Octave и обнаруживаю, что пакет изображений соответствует моим потребностям. Я не знаю, однако, что будет твоим. Так что мой ответ на вопрос, стоит ли это затрат, - нет, но, конечно, другие не согласятся.
источник
MATLAB - это, прежде всего, коммерческое предложение. Поэтому все в MATLAB в значительной степени работает из коробки. Все основные функциональные возможности безупречны, и если вы работаете над специальным проектом, то у MATLAB, вероятно, есть надстройка, которую они могут продать вам, которая добавляет много дополнительных доменных файлов .m для вас. Это не дешево, но это работает, и это сделает работу без жалоб.
Octave всегда показывает свои корни с открытым исходным кодом, информацию, которая хочет быть свободной. Это бесплатно, и это будет напоминать вам, что это бесплатно при любой возможности. Он разработан добровольцами, которые ненавидят Windows со страстью. Поэтому Octave работает на Windows неохотно. Удивительно, что столько функций MATLAB существует, сколько и они.
Но вот беда. Каждый раз, когда вы пытаетесь сделать что-то более сложное, Octave внезапно ломается тонкими и трудными для понимания способами. К сожалению, драйвер терминала имел переполнение где-то глубоко в слое OpenGL. Вы не можете печатать. Упс - сюжетные фигуры делают странные вещи со своими шрифтами. Удачи в выяснении почему. К сожалению, существует некоторая скрытая зависимость между Octave и некоторым другим неясным кусочком свободного программного обеспечения, поэтому он не будет компилироваться. Удачи в выяснении, что это.
И ответ Октавы - эй! Это бесплатное программное обеспечение! У вас есть весь исходный код, вы можете исправить все эти ошибки самостоятельно! Возможно, если бы у меня было бесконечное количество времени и ресурсов в моих руках, я мог бы потратить все свое время на исправление ошибок в свободном программном обеспечении, но лично я этого не делаю. Если бы я работал в академии, я мог бы.
В сущности, вопрос о том, выбрать ли MATLAB или Octave, сводится к одному вопросу. Интересно, что этот вопрос всегда один и тот же, когда выбираешь между коммерческими и свободными вариантами программного обеспечения.
И вопрос такой:
У тебя больше денег, чем времени?
источник
Octave - это в основном версия MATLAB с открытым исходным кодом. Это было написано, чтобы быть только этим. У MATLAB очень приятный графический интерфейс, который делает его немного проще в использовании, но следующий стабильный выпуск OCTAVE также будет иметь графический интерфейс, который я тестировал в нестабильном выпуске, и выглядит фантастически. Octave гораздо более глючит, потому что он был разработан и поддерживается группой добровольцев, где развитие MATLAB финансируется миллионами долларов промышленностью. Я все еще студент и использую студенческую версию MATLAB, но я думаю о переходе на Octave после выпуска стабильной версии с графическим интерфейсом.
MATLAB, вероятно, намного мощнее, чем Octave, и алгоритмы работают быстрее, но для большинства приложений Octave более чем адекватен и, на мой взгляд, является удивительным инструментом, который абсолютно бесплатен, а Octave полностью бесплатен.
Я бы сказал, используйте MATLAB, в то время как вы можете использовать академическую версию, но переход на Octave должен быть плавным, поскольку они используют точно такой же синтаксис.
Наконец, есть проблема SIMULINK. Если вы хотите заниматься симуляцией или проектированием систем управления (возможно, существует миллион других применений), SIMULINK - это просто фантастика, и он поставляется с MATLAB. Я не думаю, что какой-либо другой подход близко к этому, хотя Scilab, очевидно, является «хорошей» альтернативой с открытым исходным кодом, я не пробовал это.
Мир.
источник
Я только начал использовать Octave. И я видел, как люди используют Matlab. И одно из основных отличий, как упомянуто выше, заключается в том, что у Octave есть интерфейс командной строки, а у Matlab - графический интерфейс. По моему мнению, графический интерфейс очень хорош для отладки. В Ocatve вы должны выполнить команды, чтобы увидеть, какова длина матрицы и т. Д., Но в Matlab это хорошо показывает все, используя хороший интерфейс. Но Octave бесплатен и хорош для основных задач, которые я выполняю. Если вы уверены, что собираетесь делать только базовые вещи или не уверены, что вам нужно прямо сейчас, тогда переходите на Octave. Вы можете заплатить за Matlab, когда действительно почувствуете необходимость.
источник
Благодаря тому, что Matlab настолько популярен и уникален, его отличные наборы инструментов в разных дисциплинах. Так как ваша главная цель - изучить Matlab, то, если вы работаете с Octave или Matlab, ничего не изменится!
Просто пойти и купить Matlab без какого-либо крутого инструментария (который в основном зависит от вашей специализации) - это не совсем разумные затраты!
Вы можете определенно начать хорошо с Octave, а также можете прочитать множество учебников по Matlab в Интернете.
источник
Не так много, что я хотел бы добавить к ответу Роди Олденхейса. Я обычно придерживаюсь стратегии, согласно которой все функции, которые я пишу, должны запускаться в Matlab.
Некоторые конкретные функции, которые я тестирую в обеих системах, для следующих случаев использования:
a) octave не нуждается в сервере лицензий - например, если ваше учреждение не поддерживает локальные лицензии. Я использовал его однажды в ситуации, когда система, в которой я использовал скрипт, не имела подключения к Интернету и собиралась работать очень долго (в углу лаборатории) и использовалась многими разными пользователями. Примечание: речь идет не о стоимости лицензии, а о связанных с этим технических проблемах.
б) Octave поддерживает другие платформы, например, Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ), что может пригодиться.
источник
Вложенные функции и замыкания теперь поддерживаются многими языками, включая MATLAB. JavaScript продвигает замыкания как первоклассный принцип проектирования.
К сожалению, Octave не поддерживает замыкания (вложенные функции с лексической областью видимости).
Согласно http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html, можно даже создать впечатление, что разработчики не хотят или не могут сделать это правильно.
Это сломает много кода в обоих направлениях. Нет обходного пути.
источник
Октава и Матлаб имеют много общего. Но Octave - это интерфейс командной строки. Вы должны вводить каждую команду в командной строке, в то время как Matlab поставляется с лучшим графическим интерфейсом. Я рекомендую сначала использовать студенческую версию Matlab; после изучения основных уроков используйте гну октавы перменталы. Теперь gnu octave поставляется с графическим интерфейсом, но сейчас это версия для разработки. Есть некоторые интерфейсы GUI для октавы GNU, такие как guioctave, xoctave (не бесплатная), IDE DomainMath и т. Д.
источник