set
、dict
和尤其是list
(也许还有一般的对象)。在Python中,任何东西都可以放在列表中,可以循环它并将其简单地转换为矩阵。在MATLAB中,可能会使用一个单元格,但它的工作方式有些不同。因此,“如何为Python程序员使用单元格”将非常有帮助。 - embert数学语言词库,或MATLAB中与Python/NumPy相似的命令 是查找常见MATLAB任务和NumPy之间"翻译"的好工具。
我无法想到一个特定的教程,但是我发现以下博客非常有用,可以了解MATLAB的内部细节:
特别是Loren on the Art of MATLAB和Steve on Image Processing是我从中学到了很多。
MATLAB 的文档非常好。在所有人都抱怨 X 文档有多么糟糕的世界中,我认为 MATLAB 的文档对其受欢迎程度做出了重要贡献。Python 的文档也很好,但 MATLAB 的文档感觉更加容易理解。可以看出 Mathworks 对此进行了一些关注。
在 MATLAB 中,矩阵是基础。如果在工作空间中执行 x = 3
,则可以对 x
进行矩阵操作(尽管可能没有意义),如转置、逆、特征分解等。无需进行类型转换。在 Python/NumPy 中,仍需要使用 scipy.matrix
将数组转换为矩阵后才能执行矩阵操作。
我不熟悉 MATLAB 是否有类似于 Python 之禅(即 import this
)的明确流派。但许多特点相似:易于实验、开发时间快、易于调试和分析、高级、可扩展。
MATLAB 不像 Python 那样强调面向对象。在 MATLAB 中仍然可以使用 OO(例如,支持类),但我不知道有多少人使用它。
我喜欢以以下方式思考:NumPy 就像 MATLAB 的核心,SciPy 就像 MATLAB 的工具箱,Matplotlib 让您像 MATLAB 一样绘图,iPython 就是 MATLAB 工作区。
哦,对了...MATLAB 从 1 开始索引,而不是从零开始!这是 MATLAB 的基本思想的逻辑结果,在线性代数中,矩阵通常从 1 开始索引。
你不能直接对函数结果进行索引;
from numpy import *
sin(array(range(10))*pi/10)[3]
在MATLAB中无法工作;你需要先保存结果:
x = sin(0:pi/10:pi)
x(3)
这是来自Jonas的教程。
我发现这个SciPy.org页面很有帮助,尽管它更适用于另一个方向,并且没有直接涉及许多核心语言特性。
同样的:
但是,这些都没有像一本好书那样向我解释MATLAB语言和数据结构,以一种利用我现有的Python知识的方式。(Jonas链接的问题确实如此-请查看。)