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

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

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

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

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


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

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

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

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

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

Я изучаю компьютерный взгляд на phd и использую Matlab в течение 4 лет, до моего phd я использовал разные языки, включая С++, 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; графический интерфейс для обрезки изображения: imcrop(im);

Список может быть очень длинным... И их очень легко найти, используя справку.

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

3) IDE

Пример: я запускаю script. Это вызывает ошибку из-за матрицы. Я все еще могу выполнить код с командной строкой. Я визуализирую его: 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 гораздо меньше возможностей. Но есть одна вещь, которая очень раздражает. Вы можете отображать цифры только один раз за script??? если у меня есть script, я не могу отображать файлы на каждом шаге --- > бесполезно.

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

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

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

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

Ответ 7

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

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

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

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

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

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

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

Ответ 12

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

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

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

Ответ 13

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

Ответ 14

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

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

Ответ 15

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

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

Ответ 16

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

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

Ответ 17

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

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

Ответ 18

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

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

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

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

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

Ответ 19

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

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

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

Ответ 20

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

Ответ 21

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