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

StackOverflow https://stackoverflow.com/questions/179904

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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


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

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

Это было полезно?

Решение

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

Вы должны понимать, что в MATLAB он начинался как оболочка с библиотек Fortran . для линейной алгебры. Долгое время у него было такое отношение, что & Quot; весь мир представляет собой массив значений типа double (float) & Quot ;. Как язык, он вырос очень органично, и есть некоторые недостатки, которые очень сильно запекались, если смотреть на него как на язык программирования.

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

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

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

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

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

Другие советы

Большинство ответов не доходят до сути.

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

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

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

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

Самый близкий к этому - python...Но это просто проблема в python, мне приходится каждый раз заходить в Google, чтобы найти название нужной мне функции, а затем мне нужно добавлять пакеты, а пакеты несовместимы один с другим, формат матрицы меняется, функция свертки обрабатывает только удвоения, но не выдает ошибку, когда я даю ей char, просто выдает неправильный вывод...НЕТ

3) IDE

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

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

Есть потрясающая профилировщик включен в среду разработки.KCahcegrind - это такая мука в использовании по сравнению с этим.

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

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

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

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 или скупился и научился работать с разреженными матрицами в Perl или Python.

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

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

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

MATLAB является популярным и широко адаптированным сложный программный пакет. Было бы ошибкой думать это просто математическое программное обеспечение, так как оно имеет широкий спектр & Quot; Инструментарии Quot ;. & Недавно я использовал 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, упомянутая @ Джим С из GNU по имени Октава .

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

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

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

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

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

<Ол>
  • Никто в компании не знал Python, хотя многие из нас хотели его использовать.
  • MatLab имеет имя, компанию и целевую группу для решения любых проблем.
  • Было несколько (но не так много) устаревших проектов MatLab, которые нужно было бы переписать.
  • Если оно того стоит & # 163; 10 000 (??), оно того стоит !!

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

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

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

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

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

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

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

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

    Я знаю, что этот вопрос старый, и, следовательно, больше не может быть смотрел, но я чувствовал, что необходимо комментировать. Как Аэрокосмический инженер в Технологии Джорджии, я могу сказать, без сомневается, что 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, если вы собираетесь вычислять уравнения.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top