MATLAB для программистов на Python - PullRequest
13 голосов
/ 04 октября 2010

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

Существует огромное количество ресурсов и ресурсов, относящихся к движению в противоположном направлении, преобразование MATLAB в (Python + tools), но это не то, что мне нужно идти.Какие структуры данных мне следует поменять, если я должен использовать классы, где может возникнуть ошибка NumPy и т. Д .?

Ответы [ 6 ]

6 голосов
/ 04 октября 2010

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

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

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

5 голосов
/ 04 октября 2010

Тезаурус математических языков или синонимы команд MATLAB в Python / NumPy отлично подходит для поиска "переводов" между общими задачами MATLAB и NumPy.

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

InВ частности, Лорен об искусстве MATLAB и Стив об обработке изображений - это два, из которых я многому научился.

3 голосов
/ 21 октября 2010
  1. MATLAB имеет превосходную документацию.В мире, где все жалуются на плохую документацию X, я думаю, что документация MATLAB значительно способствует ее популярности.Python тоже хорош, но MATLAB чувствует себя немного более доступным сразу.Вы можете сказать, что Mathworks позаботился об этом.

  2. В MATLAB матрица является фундаментальной.Если вы выполняете x = 3 в рабочей области, вы можете затем выполнять матричные операции с x (какими бы бессмысленными они ни были), такие как транспонирование, обратное, собственное разложение и т. Д. Приведение не требуется.В Python / NumPy вам по-прежнему необходимо преобразовывать массивы в матрицы, используя scipy.matrix перед выполнением операций над матрицами.

  3. Я не знаком ни с какой явной, популярной философией MATLAB, аналогичной дзен Python (т.е. import this).Но многие характеристики схожи: простота экспериментов, быстрое время разработки, простота отладки и профилирования, высокий уровень, расширяемость.

  4. MATLAB не подчеркивает ориентацию объектов, как Python.ОО по-прежнему возможен в MATLAB (например, поддерживаются классы), но я не знаю многих людей, которые его используют.

  5. Мне нравится думать следующим образом: NumPyкак ядро ​​MATLAB, SciPy похоже на наборы инструментов MATLAB, Matplotlib позволяет создавать графики как MATLAB, а iPython - это рабочее пространство MATLAB.

  6. О да ... MATLAB начинает индексировать с 1, а не с нуля!Это является логическим следствием фундаментальной идеи MATLAB о том, что каждая числовая «вещь» является матрицей, а в линейной алгебре матрицы часто индексируются, начиная с 1.

2 голосов
/ 07 марта 2011

Несколько проблем с производительностью:

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

  2. Не используйте циклы for: узнайте, как векторизовать операции.MATLAB быстр в векторизованных функциях и непомерно медленен при выполнении циклов for.

0 голосов
/ 21 октября 2010

Вы не можете напрямую индексировать результат функции;

from numpy import *
sin(array(range(10))*pi/10)[3]

Не работает в MATLAB ; сначала нужно сохранить результат:

x = sin(0:pi/10:pi)
x(3)

Это из учебника Джонаса.

0 голосов
/ 04 октября 2010

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

В том же духе:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...