之前我曾经使用过MATLAB,但我现在需要对它有一个很好的理解,而我最熟悉的语言是Python。与Python相比,是否需要描述MATLAB语言特性,习语,最佳实践或哲学?
有相当多的嗡嗡声和相关方向的资源,MATLAB到(Python +工具)转换,但这不是我需要去的方式。我应该交换哪些数据结构,我应该使用类,可能NumPy直觉出错等等?
答案 0 :(得分:6)
文档是MATLAB的优点之一。如果您需要进入MATLAB,最好的起点之一是“Getting Started”部分。其中一些对你来说太基础了,这比它太先进了要好得多,但它会向你展示语言最重要的方面。
您可能需要注意的一件事是MATLAB从1开始索引。对于MATLAB程序员可能需要注意的其他方面,您可能需要查看this question的答案。
如果您需要MATLAB来完成特定任务,那么帮助会提供大量演示,让您走上正确的道路。
答案 1 :(得分:5)
Thesaurus of Mathematical Languages, or MATLAB synonymous commands in Python/NumPy非常适合在常见的MATLAB任务和NumPy之间查找“翻译”。
我想不出一个特定的教程。但是我发现的一个资源对于获取MATLAB的细节非常有用:博客:
特别是,Loren on the Art of MATLAB和Steve on Image Processing是我从中学到很多的两个。
答案 2 :(得分:3)
MATLAB有精湛的文档。在一个每个人都抱怨文档X有多糟糕的世界里,我认为MATLAB的文档对其受欢迎程度的贡献很大。 Python也很好,但MATLAB只是感觉更容易获得。您可以告诉Mathworks注意它。
在MATLAB中,矩阵是基础。如果在工作区中执行x = 3
,则可以对x
进行矩阵运算(尽可能没有意义),例如换位,逆,特征分解等。不需要进行转换。在Python / NumPy中,在进行矩阵运算之前,仍然需要使用scipy.matrix
将数组转换为矩阵。
我不熟悉任何类似于Python禅的明确,流行的MATLAB哲学(即import this
)。但许多特征是相似的:简单的实验,快速的开发时间,易于调试和分析,高水平,可扩展。
MATLAB并不像Python那样强调面向对象。在MATLAB中仍然可以使用OO(例如,支持类),但我不知道有多少人使用它。
我喜欢用以下方式思考:NumPy就像MATLAB核心,SciPy就像MATLAB工具箱一样,Matplotlib可以让你像MATLAB一样绘制,iPython是MATLAB工作区。
哦是啊...... MATLAB用1开始索引,而不是零!这是MATLAB基本思想的逻辑结果,即每个数字“事物”都是一个矩阵,而在线性代数中,矩阵通常从1开始编制索引。
答案 3 :(得分:2)
答案 4 :(得分:0)
我发现这个SciPy.org page很有帮助,即使它在另一个方向上效果更好,并且没有直接解决许多核心语言功能。
沿着同样的路线:
但是这些都没有真正向我解释MATLAB语言和数据结构就像一本关于语言的好书,它利用了我对Python的现有知识。 (Jonas链接的问题确实如此 - 检查出来。)
答案 5 :(得分:0)
您无法直接对函数结果进行索引;
from numpy import *
sin(array(range(10))*pi/10)[3]
它在MATLAB中不起作用;你需要先保存结果:
x = sin(0:pi/10:pi)
x(3)
这是来自Jonas的教程。