适用于Python程序员的MATLAB

时间:2010-10-04 01:47:42

标签: python matlab

之前我曾经使用过MATLAB,但我现在需要对它有一个很好的理解,而我最熟悉的语言是Python。与Python相比,是否需要描述MATLAB语言特性,习语,最佳实践或哲学?

有相当多的嗡嗡声和相关方向的资源,MATLAB到(Python +工具)转换,但这不是我需要去的方式。我应该交换哪些数据结构,我应该使用类,可能NumPy直觉出错等等?

6 个答案:

答案 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 MATLABSteve on Image Processing是我从中学到很多的两个。

答案 2 :(得分:3)

  1. MATLAB精湛的文档。在一个每个人都抱怨文档X有多糟糕的世界里,我认为MATLAB的文档对其受欢迎程度的贡献很大。 Python也很好,但MATLAB只是感觉更容易获得。您可以告诉Mathworks注意它。

  2. 在MATLAB中,矩阵是基础。如果在工作区中执行x = 3,则可以对x进行矩阵运算(尽可能没有意义),例如换位,逆,特征分解等。不需要进行转换。在Python / NumPy中,在进行矩阵运算之前,仍然需要使用scipy.matrix将数组转换为矩阵。

  3. 我不熟悉任何类似于Python禅的明确,流行的MATLAB哲学(即import this)。但许多特征是相似的:简单的实验,快速的开发时间,易于调试和分析,高水平,可扩展。

  4. MATLAB并不像Python那样强调面向对象。在MATLAB中仍然可以使用OO(例如,支持类),但我不知道有多少人使用它。

  5. 我喜欢用以下方式思考:NumPy就像MATLAB核心,SciPy就像MATLAB工具箱一样,Matplotlib可以让你像MATLAB一样绘制,iPython是MATLAB工作区。

  6. 哦是啊...... MATLAB用1开始索引,而不是零!这是MATLAB基本思想的逻辑结果,即每个数字“事物”都是一个矩阵,而在线性代数中,矩阵通常从1开始编制索引。

答案 3 :(得分:2)

一些性能问题:

  1. 不要使用类:MATLAB类真的很慢。

  2. 不要使用for循环:了解如何vectorize操作。在执行for循环时,MATLAB快速执行矢量化函数并且速度过慢。

答案 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的教程。