两者各有侧重,Matlab擅长于科学计算(矩阵,方程,方程组,微分方程),Numpy是一个开源的python数学库,使用起来比较灵活(开源,意味着可以按照自己想要的方式来修改源码)。这两大工具堪称计算神器,下面我就来分别介绍一下这两大计算领域的神器(插图会附上一些推荐的教材)。
Matlab.Matlab是美国Mathworks公司推出的一款商业科学计算软件(价格不便宜),它的编程语言是M语言。Matlab计算数据时最基本的处理单元是矩阵,他有强大的矩阵运算能力,几乎所有线性代数问题都能使用matlab进行求解。此外Matlab在工程领域也有很广泛的应用,它自带了强大的模拟仿真工具,可以对各类科学工程技术问题进行数学建模仿真。
Numpy.Numpy是基于python这种脚本编程语言的(M语言也是一种脚本语言),python是一门简洁优雅的编程语言(语法接近自然语言,可以快速上手),由于python可以和多种语言混合使用,被广泛的当作胶水语言来使用。Numpy在计算时,它的最基本的数据处理单元是数组(和matlab不同),由于numpy是开源算法库,可以在任何地方自由更改和使用(matlab属于商业闭源软件,无法对其进行修改,开发商业软件时也存在一定的授权问题)。
使用选择问题。那么我们在实际开发中该如何进行选择呢,我个人的建议如下:如果是常规计算(不太复杂的情况,比如简单的求导,解低次方程组)时,使用numpy可以快速进行开发;而如果计算问题比较麻烦(如微积分,高次方程)或是需要进行模拟仿真,这时候不要犹豫,直接上matlab,这是它最擅长的领域。其实在很多情况下可以二者混合开发,常规计算用numpy,复杂一点的上matlab。
关于这两者的比较,就介绍这么多,欢迎大家关注太科罗技头条号,并在下方积极留言讨论。拿numpy跟matlab比是不合适的,numpy是一个软件包,而matlab有两个意思,一个是指语言,另一个是指软件,如果从语言的角度说应该拿matlab跟python比,这两种语言确实不分伯仲,matlab能做到的事python基本都能做到。不过matlab在与硬件模块的通信方面更为强大,比如可以把m脚本写的算法编译成c语言或vhdl代码。我估计提问者想问的是在矩阵计算方面numpy与matlab的性能差异。事实上两者用的底层线性代数计算算法库都是blas。但是两者解释器不同,所以对同样功能的计算会有点差异,但是并不太明显,总的来说matlab强点,毕竟是商业软件,做了很多优化。