MATLAB для программистов Python
Я использовал MATLAB раньше, но мне нужно хорошо понять его сейчас, а язык я Наиболее знакомы с Python. Позаботьтесь о языковой функции MATLAB, идиоме, лучшей практике или философии по сравнению с Python?
Там огромное количество гудков и ресурсов, связанных с движением в противоположном направлении, преобразование MATLAB в (Python + tools), но это не так, как мне нужно. Какие структуры данных я должен поменять, следует ли использовать классы, где NumPy интуиция идет не так и т.д.?
Ответы
Ответ 1
Документация является одной из сильных сторон MATLAB. Если вам нужно попасть в MATLAB, одним из лучших мест для начала является "" Начало работы". Некоторые из них будут слишком базовыми для вас, что намного лучше, чем если бы оно было слишком продвинутым, но оно покажет вам наиболее важные аспекты языка.
Одна из вещей, на которые вы можете обратить внимание, - это то, что MATLAB начинает индексировать в 1. Для других аспектов программистов MATLAB, возможно, вам необходимо знать, вы можете посмотреть ответы на этот вопрос.
Если вам нужна MATLAB для конкретной задачи, помощь предоставляет множество демоверсий, которые должны поместить вас на правильный путь.
Ответ 2
Тезаурус математических языков или синтаксические команды MATLAB в Python/NumPy отлично подходит для поиска "переводов" между обычными задачами MATLAB и NumPy.
Я не могу придумать какой-то конкретный учебник. Но один ресурс, который я нашел очень полезным для сбора входов и выходов MATLAB, - это блоги:
В частности, Лорен по искусству MATLAB и Steve on Image Обработка - это два, о которых я многому научился.
Ответ 3
-
MATLAB имеет превосходную документацию. В мире, где все жалуются на то, насколько плохая документация X, я думаю, что документация MATLAB значительно способствует его популярности. Python тоже хорош, но MATLAB просто чувствует себя немного более доступным. Вы можете сказать, что Mathworks позаботился о ней.
-
В MATLAB матрица фундаментальна. Если вы выполняете x = 3
в рабочей области, вы можете выполнить операции с матрицей до x
(как бы бессмысленно, как это могло бы быть), например, транспозицию, инверсию, eigendecomposition и т.д. Не требуется кастинг. В Python/NumPy вам все равно нужно преобразовать массивы в матрицы с помощью scipy.matrix
перед выполнением операций с матрицами.
-
Я не знаком с какой-либо явной, популярной философией MATLAB, аналогичной Python zen (т.е. import this
). Но многие характеристики схожи: легкое экспериментирование, быстрое время разработки, легкость отладки и профиль, высокий уровень, расширяемость.
-
MATLAB не подчеркивает объектную ориентацию, как Python. OO по-прежнему возможно в MATLAB (например, поддерживаются классы), но я не знаю многих людей, которые его используют.
-
Мне нравится думать следующим образом: NumPy похож на ядро MATLAB, SciPy похоже на панели инструментов MATLAB, Matplotlib позволяет строить как MATLAB, а iPython - рабочее пространство MATLAB.
-
О да... MATLAB начинает индексирование с 1, а не с нуля! Это логическое следствие фундаментальной идеи MATLAB о том, что каждая цифровая "вещь" является матрицей, а в линейной алгебре матрицы часто индексируются, начиная с 1.
Ответ 4
Пара проблем с производительностью:
-
Не используйте классы: MATLAB классы действительно очень медленные.
-
Не используйте циклы for
: узнайте, как vectorize операции. MATLAB работает быстро в векторизованных функциях и чрезмерно медленным при выполнении циклов for
.
Ответ 5
Я нашел эту полезной, хотя она работает лучше для другого направления и напрямую не затрагивает многие функции основного языка.
В одних и тех же строках:
Но ни один из них действительно не объясняет мне язык MATLAB и структуры данных, как хорошую книгу о языке, таким образом, что использует мои существующие знания Python. (Ответ на вопрос Джонаса делает, хотя - проверьте это.)
Ответ 6
Вы не можете напрямую индексировать результат функции;
from numpy import *
sin(array(range(10))*pi/10)[3]
Он не работает в MATLAB; вам нужно сначала сохранить результат:
x = sin(0:pi/10:pi)
x(3)
Это из учебника Джонаса.