Для чего нужен MATLAB? Почему он так используется университетами? Когда это лучше, чем Python?

Недавно меня попросили изучить некоторые основы MATLAB для класса.

Что делает его настолько классным для исследователей и людей, которые работают в университете? Я видел, что здорово работать с матрицами и строить вещи … (что можно легко сделать в Python, используя некоторые библиотеки).

Написание функции или разбор файла просто больно. Я все еще на старте, чего мне не хватает?

В «реальном» мире, что я должен использовать для этого? Когда это может сделать лучше, чем Python? Для лучшего я имею в виду: простой способ написать что-то исполнение.


ОБНОВЛЕНИЕ 1: Одна из вещей, которые я хотел бы узнать больше всего: «Я что-то упустил?» : D

ОБНОВЛЕНИЕ 2: Спасибо за ваши ответы. Мой вопрос не в том, чтобы купить или не купить MATLAB. У университета есть возможность предоставить мне копию старой версии MATLAB (MATLAB 5, я думаю) бесплатно, не нарушая лицензию. Я заинтересован в его возможностях, и если он заслуживает более глубокого изучения (мне не нужно ничего больше, чем базовый MATLAB для сдачи экзамена: P), это будет действительно лучше, чем Python для конкретной задачи в реальном Мир.

21 Solutions collect form web for “Для чего нужен MATLAB? Почему он так используется университетами? Когда это лучше, чем Python?”

Адам лишь частично прав. Многие, если не большинство, математики никогда не коснутся его. Если вообще есть компьютерный инструмент, это будет нечто вроде Mathematica или Maple . Инженерные отделы, с другой стороны, часто полагаются на него, и для некоторых прикладных математиков есть определенные вещи. Он также широко используется в промышленности в некоторых областях.

Что-то, что вы должны понимать о MATLAB, это то, что он начинался как оболочка библиотек Fortran для линейной алгебры. Долгое время у него было отношение, что «весь мир представляет собой массив двойников (плавает)». Как язык, он вырос очень органично, и есть некоторые недостатки, которые очень испечены, если вы посмотрите на него так же, как на язык программирования.

Однако, если вы рассматриваете его как среду для проведения определенных видов исследований, у него есть некоторые реальные сильные стороны. Это примерно так же хорошо, как и для линейной алгебры с плавающей запятой. Нотация проста и мощна, реализация быстрой и надежной. Это очень хорошо при создании графиков и других интерактивных задач. Существует большое количество «наборов инструментов» с хорошим кодом для конкретных задач, доступных по цене. Существует большое сообщество пользователей, которые используют числовые коды (Python + NumPy не имеет ничего в той же лиге, по крайней мере пока)

Python, бородавки и все, намного лучший язык программирования (как и многие другие). Тем не менее, это примерно десять лет назад с точки зрения инструментов.

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

Это отвратительный выбор для общего языка программирования; это изворотливое, медленное для многих задач (вам нужно векторизовать вещи, чтобы получить эффективные коды), и нелегко интегрироваться с внешним миром. С другой стороны, для того, что хорошо, это очень хорошо. Совсем немного вещей. Есть компания с разумной поддержкой и кто знает, сколько человеко-лет в нее вложено. Это может иметь значение в промышленности.

Строго глядя на сравнение Python и MATLAB, они в основном представляют собой различные инструменты для разных заданий. В областях, где они немного перекрывают друг друга, трудно сказать, какой лучший маршрут для вас (зависит от того, что вы пытаетесь сделать). Но в основном Python не так хорош в основных силах MATLAB, и наоборот.

Большинство ответов не понимают.

Есть одна причина, почему matlab настолько хорош и так широко используется:

ЧРЕЗВЫЧАЙНЫЙ БЫСТРЫЙ КОД

Я компьютерный зрение, студент phD, и я использую Matlab в течение 4 лет, до моего phd я использовал разные языки, включая C ++, java, php, python … Большинство исследователей, занимающихся компьютерным видением, используют исключительно Matlab.

1) Исследователи нуждаются в быстром прототипировании

В исследовательской среде у нас (надеюсь) часто появляются новые идеи, и мы хотим проверить их на самом деле быстро, чтобы увидеть, стоит ли продолжать в этом направлении. И чаще всего только крошечная часть того, что мы кодируем, будет полезна.

Matlab часто медленнее во время выполнения , но нам все равно. Поскольку мы не знаем заранее, какой метод будет успешным, нам нужно попробовать много вещей, поэтому наша бутылочная горловина – это время программирования , потому что наш код будет чаще всего запускаться несколько раз, чтобы опубликовать результаты, и это все.

Итак, давайте посмотрим, как может помочь Matlab.

2) Все, что мне нужно, уже есть

У Matlab действительно много функций, которые мне нужны, так что мне не нужно постоянно изобретать их:

изменить индекс матрицы на 2d координаты: ind2sub извлечь все патчи изображения: im2col ; вычислить гистограмму изображения: hist(Im(:)) ; найти уникальные элементы в списке unique(list) ; добавьте вектор ко всем векторам матрицы bsxfun(@plus,M,V) ; свертка на n-мерных массивах convn(A) ; вычислить время вычисления tic; %%code; toc кода: tic; %%code; toc tic; %%code; toc tic; %%code; toc ; графический интерфейс для обрезки изображения: imcrop(im) ;

Список может быть очень длинным … И их очень легко найти с помощью справки.

Ближайшим к этому является python … Но это просто боль в python, я должен каждый раз идти в google искать имя нужной мне функции, а затем мне нужно добавлять пакеты, а пакеты несовместимы один с другим, формат смены матрицы, функция свертки обрабатывает только два раза, но не делает ошибку, когда я даю ей char, просто дайте неверный вывод … no

3) IDE

Пример: я запускаю скрипт. Это вызывает ошибку из-за матрицы. Я все еще могу выполнить код с командной строкой. Я визуализирую его: imagesc(matrix) . Я вижу, что последняя строка матрицы является странной. Я исправляю ошибку. Все переменные все еще установлены . Я выбираю оставшийся код, нажмите F9, чтобы выполнить выбор, и все продолжается. Благодаря этому отладка становится быстрой .

Matlab подчеркивает некоторые мои ошибки перед выполнением. Поэтому я могу быстро увидеть проблемы. Он предлагает некоторый способ сделать мой код быстрее.

В среде IDE есть удивительный профилировщик . KCahcegrind – такая боль, чтобы использовать по сравнению с этим.

Яркие возможности python имеют большое значение. python без ipython не используется. Я никогда не могу отлаживать, используя ipython.

+ автозаполнение, помощь для аргументов функции, …

4) Краткий код

Чтобы нормализовать все столбцы матрицы (что мне нужно все время), я делаю: bsxfun(@times,A,1./sqrt(sum(A.^2)))

Чтобы удалить из матрицы все колоны с малой суммой:

A(:,sum(A)<e)=[]

Выполнение вычислений на графическом процессоре :

 gpuX = gpuarray(X); %%% code normally and everything is done on GPU 

Чтобы парализовать мой код:

 parfor n=1:100 %%% code normally and everything is multi-threaded 

Какой язык может победить?

И, конечно, мне редко приходится создавать циклы, все включено в функции, которые облегчают чтение кода, и не имеют головной боли с индексами. Поэтому я могу сосредоточиться на том, что я хочу запрограммировать, а не на том, как программировать его.

5) Инструменты для раскроя

Matlab славится своими инструментами построения. Они очень полезны.

У инструментов построения Python гораздо меньше возможностей. Но есть одна вещь, которая очень раздражает. Вы можете рисовать фигуры только один раз за сценарий ??? если у меня есть сценарий, я не могу отображать вещи на каждом шаге —> бесполезно.

6) Документация

Все очень быстро доступно, все кристально чистое, имена функций хорошо выбраны. С python мне всегда нужно работать с google, смотреть в форумах или stackoverflow …. полное время hog.

PS: Наконец, что я ненавижу с помощью Matlab: его цена

Я много лет использую Matlab в своих исследованиях. Это отлично подходит для линейной алгебры и имеет большой набор хорошо написанных наборов инструментов. Самые последние версии начинают приближать его к тому, чтобы быть ближе к языку общего назначения (лучшие оптимизаторы, гораздо лучшая объектная модель, более богатые правила определения области и т. Д.).

Прошлым летом у меня была работа, где я использовал Python + numpy вместо Matlab. Мне понравилось изменение темпа. Это «реальный» язык (и все это влечет за собой), и он имеет ряд замечательных числовых функций, таких как широковещательные массивы. Мне также очень нравится среда ipython.

Вот некоторые вещи, которые я предпочитаю в Matlab:

  • Консистенция: MathWorks потратила много усилий, чтобы инструментальные панели выглядели и работали как друг друга. Они не сделали идеальной работы, но это одно из лучших, что я видел для кодовой базы, которая насчитывает десятилетия.
  • Документация: Мне очень сложно разобраться в некоторых вещах в numpy и / или python, потому что качество документации является пятнистым: некоторые вещи документированы очень хорошо, а некоторые совсем нет. Часто бывает очень неприятно, когда я вижу вещи, которые, похоже, имитируют Matlab, но не совсем то же самое. Возможность захватить источник неоценима (честно говоря, большая часть наборов инструментов Matlab поставляется с источником тоже)
  • компактность: для того, что я делаю, синтаксис Matlab часто более компактен (но не всегда)
  • Импульс: у меня слишком много кода Matlab для изменения сейчас

Если бы у меня не было такой большой существующей кодовой базы, я бы серьезно подумал о переходе на Python + numpy.

Держи все. Когда вы последний раз запрограммировали свой калькулятор на игру в тетрис? Вы на самом деле думаете, что можете написать все, что захотите, в этих 128 КБ ОЗУ? Наверное, нет. MATLAB не предназначен для программирования, если вы не имеете дело с огромными матрицами. Это графический калькулятор, который вы выталкиваете, когда у вас есть мегабайты в гигабайтах данных для хруста и / или построения графика. Изучите только основные вещи, но также не убейте себя, пытаясь сделать Python графическим калькулятором.

Вы быстро почувствуете, когда хотите хрустнуть, заговорить или исследовать в MATLAB, и когда вы захотите получить все, что предлагает Python. Многие инженеры обращаются к предварительной и последующей обработке в Python или Perl. Иногда даже просто звонил в MATLAB для жестких бит.

Это такие совершенно разные инструменты, что вы должны сначала изучить свои основные сильные стороны, не пытаясь заменить их другим. Предоставленный для экономии денег, я бы использовал Octave или skimp на легкость и научился работать с разреженными матрицами в Perl или Python.

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

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

Вам не нужно беспокоиться об IDE так же, как и в более официальных пакетах, поэтому для студентов, не имеющих большого опыта в программировании, легче подобрать.

MATLAB – популярная и широко адаптированная часть сложного программного пакета. Было бы ошибкой думать, что это всего лишь математическое программное обеспечение, так как оно имеет широкий диапазон «наборов инструментов». Недавно я использовал Matplotlib для построения некоторых данных из базы данных, и он выполнил эту работу, не требуя всех колоколов и свистов MATLAB. Тем не менее, может быть нецелесообразно сравнивать Python и MATLAB в каждой ситуации. Как и во всем остальном, решение зависит от того, что вам нужно делать.

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

Еще одна приятная вещь о MATLAB заключается в том, что очень просто и быстро сделать прототипирование и опробовать идеи, используя встроенные функции панели инструментов. Например, не требуется никаких усилий, чтобы импортировать изображение и вычислить его гистограмму или выполнить некоторую простую обработку. Одним из недостатков MATLAB может быть его скорость из-за ее интерпретируемого характера. Однако, если действительно нужна скорость, чем он может выбрать для реализации проверенной логики в C / C ++ и т. Д.

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

Последний вопрос о MATLAB, который я вижу, не упоминается в ответах, заключается в том, что он имеет очень мощную среду визуального моделирования / моделирования под названием Simulink . Легче создавать и моделировать более крупные системы с помощью Simulink.

Наконец, опять же, все зависит от проблемы, которую вам нужно решить. Если ваш проблемный домен может использовать один из наборов инструментов MATLAB, и у вас есть доступ к MATLAB, вы можете быть уверены, что у вас будет подходящий инструмент для его решения.

MATLAB, как упоминалось другими, отлично подходит для манипулирования матрицами и первоначально был построен как расширение известных библиотек BLAS и LAPACK, используемых для линейной алгебры. Он хорошо взаимодействует с другими языками, такими как Java, и пользуется большим спросом у инженерных и научных компаний для хорошо разработанных и документированных библиотек. Из того, что я знаю о Python и NumPy, хотя они разделяют многие фундаментальные возможности MATLAB, у них нет полной ширины и глубины возможностей со своими библиотеками.

Лично я использую MATLAB, потому что это то, что я узнал в своей стажировке, вот что я использовал в градиентной школе, и именно это я использовал в своей первой работе. У меня нет ничего против Python (или любого другого языка). Это то, что я тоже использую.

Кроме того, есть еще одна бесплатная версия в дополнение к scilab, упомянутая @ Jim C от gnu под названием Octave .

Лично я склонен думать о Matlab как о калькуляторе интерактивной матрицы и о графике с несколькими возможностями сценариев, а не как о полноценном языке программирования, таком как Python или C. Причина его успеха в том, что материал матрицы и построение графика ящик, и вы можете сделать несколько очень специфических вещей в нем, практически не имея никаких знаний в области программирования. Язык, как вы отмечаете, чрезвычайно расстраивает использование для более универсальных задач, таких как даже самая простая обработка строк. Его синтаксис причудливый, и он не был создан с абстракциями, необходимыми для проектов из более чем 100 строк или около того.

Я думаю, что причина, по которой люди пытаются использовать Matlab в качестве серьезного языка программирования, – это то, что большинство инженеров (есть исключения, моя степень в биомедицинской инженерии и мне нравится программирование) – это ужасные программисты и ненависть к программированию. Они учат Matlab в колледже в основном за матричную математику, и они изучают некоторые рудиментарные программы как часть обучения Matlab и просто предполагают, что Matlab достаточно хорош. Я не могу придумать кого-нибудь, кого знаю, кто знает какой-либо язык помимо Matlab, но по-прежнему использует Matlab для чего-то другого, кроме нескольких чистых хрустящих приложений.

Наиболее вероятная причина, по которой он так много используется в университетах, заключается в том, что математический факультет используется для этого, понимает его и знает, как включить его в свою учебную программу.

Между matplotlib + pylab и NumPy я не думаю, что существует много фактической разницы между Matlab и python, кроме культурной инерции, как было предложено @Adam Bellaire.

Я считаю, что у вас очень хороший момент, и это тот, который был поднят в компании, где я работаю. Компания ограничена в своей способности применять Matlab из-за связанных с этим лицензионных затрат. Один разработчик доказал, что Python был очень подходящей заменой, но он упал на неосведомленные уши, потому что владельцы этих ушей …

  1. Никто из компаний в компании не знал Python, хотя многие из нас хотели его использовать.
  2. У MatLab есть имя, компания и целевая группа, чтобы решить любые проблемы.
  3. Было несколько (но не много) старых проектов MatLab, которые нужно было переписать.

Если это стоит 10 000 фунтов стерлингов (??), это стоит того!

Я с тобой здесь. Python – очень хорошая замена для MatLab.

Я должен указать, что мне сказали, что компания использует от 5% до 10% возможностей MatLabs, и это является основой для моего согласия с оригинальным плакатом

MATLAB – фантастический инструмент для

  • макетирования
  • инженерного моделирования и
  • быстрая визуализация данных

Вы можете очень эффективно играть, визуализировать и проверять свои идеи в наборе данных. Он не должен рассматриваться как альтернатива другим языкам программного обеспечения, используемым для разработки продукта. Я настоятельно рекомендую его для вышеупомянутых задач, хотя это дорого – бесплатные альтернативы, такие как Octave и Python, догоняют.

Кажется чистой инерцией. Там, где он используется, все слишком заняты, чтобы изучить IDL или numpy достаточно подробно для переключения и не хотят переписывать хорошие рабочие программы. К счастью, это не совсем верно, но достаточно верно в достаточном количестве, что Matlab будет длиться долго. Как и Fortran (в активном использовании, где я работаю!)

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

К сожалению, у вас не будет большой возможности использовать их в академической среде.

Я знаю, что этот вопрос старый, и поэтому его больше нельзя смотреть, но я чувствовал, что нужно прокомментировать. Как инженер аэрокосмической техники в Georgia Tech, я могу с полным основанием сказать, что MATLAB – это потрясающе. Вы можете быстро связать его с вашими электронными таблицами Excel, чтобы получить данные о том, как летают высокие и быстрые ракеты, как ветер влияет на те же самые ракеты, и как разные двигатели имеют значение. Помимо ракет, аналогичные концепции вступают в игру для автомобилей, грузовиков, самолетов, космических аппаратов и даже легкой атлетики. Вы можете получать большие объемы данных, манипулировать всем этим и следить за тем, чтобы ваши результаты были такими, какими они должны быть. В случае, если что-то не работает, вы можете добавить разрыв строки, где возникает ошибка для отладки вашей программы без необходимости перекомпилировать каждый раз, когда вы хотите запустить свою программу. Это медленнее, чем некоторые другие программы? Ну, технически. Я уверен, что если вы хотите сделать хруст, это отлично подходит для графического процессора NVIDIA, вероятно, это будет быстрее, но для более сложной отладки требуется гораздо больше усилий.

Как общий язык программирования, MATLAB слаб. Он не предназначен для работы с Python, Java, ActionScript, C / C ++ или любым другим языком общего назначения. Он предназначен для инженерной и математической ниши, которую подразумевает название, и делает это фантастически.

MATLAB – обертка вокруг общедоступных библиотек. И во многих случаях это так и есть. Когда вы переходите к более крупным наборам данных, у него есть много дополнительных оптимизаций, в том числе обследование и специальные проблемы с общими корпусами (например, сокращение до разреженных матриц, где это полезно), а также обработка крайних случаев. Часто вы можете отправить проблему в стандартной форме на общую функцию, и она будет определять лучший базовый алгоритм для использования на основе ваших данных. Для малых N все алгоритмы бывают быстрыми, но MATLAB позволяет определить оптимальный алгоритм без проблем.

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

Одна из причин, по которой MATLAB пользуется популярностью в университетах, – это та же самая причина, по которой в университетах много популярности: в ней много профессоров, и это довольно здорово.

Я говорил с большим количеством людей, которые особенно заинтересованы в способности MATLAB заходить в графический процессор вместо того, чтобы работать последовательно. Воспользовавшись Python в школе градиента, я хотел бы, чтобы у меня были лики, чтобы работать с MATLAB в этом случае. Это наверняка сделало бы вычисления векторного пространства ветерок.

Прошло некоторое время с тех пор, как я использовал Matlab, но из памяти он обеспечивает (хотя и дополнительные плагины) возможность генерировать источник, чтобы вы могли реализовать свой алгоритм на DSP.

Поскольку python – это язык программирования общего назначения, нет причин, по которым вы не могли бы сделать все на python, что вы можете сделать в Matlab. Тем не менее, Matlab предоставляет ряд других инструментов – например. очень широкий набор функций dsp, широкий спектр функций домена S и Z.

Все они могут быть закодированы вручную на языке python (поскольку это язык общего назначения), но если все, что вам нужно, это результаты, возможно, тратить деньги на Matlab – это более дешевый вариант?

Эти функции также были настроены на производительность. например. Документация для Numpy указывает, что их преобразование Фурье оптимизировано для мощности двухточечных наборов данных. Насколько я понимаю, Matlab был написан для использования наиболее эффективного преобразования Фурье в соответствии с размером набора данных, а не только от силы 2.

edit: О, и в Matlab вы можете легко создавать сюжетные сюжеты, что важно, когда вы представляете свои данные. Опять же, конечно, не невозможно использовать другие инструменты.

Я думаю, вы ответили на свой вопрос, когда заметили, что Matlab «классно работает с матрицами и замышляет вещи». Любое приложение, которое требует много математических вычислений и визуализации, возможно, будет проще всего сделать в Matlab.

Тем не менее, синтаксис Matlab кажется неудобным и показывает возраст языка. Напротив, Python – это гораздо более удобный язык программирования общего назначения, и, если правильные библиотеки могут многое сделать, что делает Matlab. Тем не менее, Matlab всегда будет иметь более сжатый синтаксис, чем Python для векторных и матричных манипуляций.

Если большая часть вашего программирования включает такие виды манипуляций, как обработка сигналов и некоторые статистические методы, то Matlab будет лучшим выбором.

Первое преимущество движка . Matlab существует с конца 1970-х годов. Python появился совсем недавно, и библиотеки, которые делают его пригодным для задач типа Matlab, появились еще совсем недавно. Люди привыкли к Матлабу, поэтому они его используют.

Matlab умеет делать хруст. Матричные и матричные манипуляции. У него много полезных встроенных библиотек (в зависимости от того, какая версия), я думаю, что проще использовать, чем python, если вы собираетесь вычислять уравнения.

Python - лучший язык программирования в мире.