MatLab用户学习Python的想法

MatLab user thinking of learning Python

本文关键字:Python 用户 学习 MatLab      更新时间:2023-10-16

尽管我真的很喜欢MatLab,但我正在考虑放弃MatLab来学习Python。然而,我担心的是,让所有移动和独立的部分组合在一起可能是一个挑战,最终可能不值得。我还考虑过进入Visual Basic或Visual C++。最后,我不断回到MatLab的轻松状态。关于Python中的困难,有什么想法或评论吗?值得吗?

一个很好的起点是这个页面:SciPy入门,它概述了您可以用来从Python走向MatLab的科学工具库:特别是库numpy、SciPy、matplotlib和交互式工作环境IPython。特别是,numpy和matplotlib的设计与使用MatLab非常相似。

NumPy的数组类型为Python语言提供了一种有效的数据结构,可用于数值计算,例如操纵矩阵。NumPy还提供了基本的数值例程,例如用于查找特征向量的工具。

例如,在matlab中,您可以编写

eye(3)-diag([1 1],1)

并取回

 1    -1     0
 0     1    -1
 0     0     1

在Python/numpy中,您可以编写

import numpy as np
np.eye(3)-np.diag([1,1],1)

并取回

array([[ 1., -1.,  0.],
       [ 0.,  1., -1.],
       [ 0.,  0.,  1.]])

带matplotlib

通过面向对象的界面或MATLAB用户熟悉的一组函数,您可以完全控制线条样式、字体属性、轴属性等。

在MatLab中进行绘图,您可以编写

x=linspace(-pi, pi, 100);
plot(x,sin(x))

在Python/numpy/matplotlib中,您可以编写

x=np.linspace(-np.pi, np.pi, 100)
import matplotlib.pyplot as plt
plt.plot(x,np.sin(x))

网络上有很多是为进行转换的人设计的,请参阅,例如Matlab用户的NumPy。

MATLAB®和NumPy/SciPy有很多共同点。但也有许多不同之处。NumPy和SciPy是为了用Python以最自然的方式进行数值和科学计算而创建的,而不是MATLAB®的克隆。本页面旨在收集有关差异的智慧,主要目的是帮助精通MATLAB®的用户成为精通NumPy和SciPy的用户。NumPyProConPage是另一个面向好奇的人的页面,他们正在考虑将Python与NumPy和SciPy一起使用,而不是MATLAB®,并希望看到利弊列表。

您可能还想考虑pylab,它将numpy和matplotlib合并到一个名称空间中,这样您就不必为上面使用的npplt前缀而烦恼。例如,请参阅维基百科。

这个网站上有一些标签值得一看:例如numpy、scipy、matplotlib。stats.se上还有一个关于Python的问题,您可能会发现它很相关。如果你对统计学感兴趣,或者对读、写和操作表格数据感兴趣,你会对pandas感兴趣,它是Python对R数据框架的回答。

至于C++,它是一种很棒的语言,但与Python不属于同一类。这里不是讨论它们优缺点的合适地方,但简而言之,C++比Python更接近机器,如果你花时间写高度优化的代码。在Python中,你可以让代码快速工作,将独立的部分粘合在一起,并可以轻松地从任何地方读取和写入数据,但Python代码有时运行速度会很慢(就像Matlab一样——如果你在numpy中进行矢量化,它会很快,否则就会被解释和缓慢)。您可能偶尔想要使用Python调用C中定义的函数的能力来加快慢Python代码的速度,请参阅,例如,这个问题。(我将把Visual Basic放在一边,因为它似乎并不相关。)

最后,正如评论中所指出的,回答任何细节都需要确切地知道你的要求是什么,不仅是你想做什么,还有你想和谁一起做,以及你有多少时间和金钱可以投资。

是的,Python值得学习。这是我十多年前学的第一门主要语言。它在Linux系统中被大量使用,尤其是在系统启动时。此外,该语言的库也得到了很好的开发。如果你想设计一款游戏,PyGame已经存在很长时间了,而且这个过程非常简单。如果你想为网络编程,Twisted是一个很好的库。他们的网络框架Django是个美人。

我发现Python是一门非常喜欢英语的语言。

如果你愿意的话,你也可以在Ruby达到顶峰。Ruby允许许多不同风格的编程。因此,您可以像在Ruby中使用其他语言一样进行编程(我的意思是严格意义上的风格)。此外,Ruby拥有我所见过的最"免费"的在线学习和使用语言的资源。

我喜欢这两种语言。但我的回答是"是的!"Python是一门很棒的第一语言。

这完全取决于你想做什么,以及你喜欢什么方法。



您可以在这里找到许多数学绘图库:https://wiki.python.org/moin/NumericAndScientific/Plotting
其中许多可能是Matlab的优秀替代方案。

Python非常适合像Arduino那样的固件编程。C++对于编程软件来说是非常强大的;应用程序。如果您想对硬件进行编程,请使用python。如果你想编程软件,使用C++。我在学习C++,它很棒。