Python 会不会替代 MATLAB
如果说的是matlab整个产品,我觉得短时间内是不可能的。
如果是符号计算,matlab的确不行。
即使是matlab比较擅长的有大量矩阵和向量的数值计算,和一些优良的库相比,也不一定效率最高。
但是,matlab发展到今天,这些都不是matlab最重要的部分了。
matlab一直在推广的是model based design
mathworks在说,他家的软件结合model based design这种设计方法,辅助了一台火星探测器的设计。看到上面的海报里面说的380,000 simulations,你可能觉得这个设计方法中,matlab的产品的作用仅仅是仿真,但是这不一定,看下一个例子:
这个是个国内的例子,电动汽车的电源管理,注意上面的话:100% of code generated , 这里说的code是C语言代码,这些C代码的target device是嵌入式设备。
这就意味着那不仅仅是仿真了,模型是能够直接生成代码的。
所以,python要取代它。
除了数值计算。
需要开源社区设计出一个比较成熟的仿真软件。
而仿真软件还要能够支持code generation。
这本质上是一堆不同的编译器(嵌入式设备众多,还需要厂家的配合才行)。
PS:
1.
当初Cleve Moler设计matlab是帮学生减轻负担,避免他们去学Fortran(LINPACK)。但是,作为一个工程师的Jack的加入,肯定会把这个东西往工程上靠。那么数值计算是foundation,但是在这个foundation上如何发挥才是使得matlab不一样了的地方。
而这个Foundation的部分,可以在后续的release中慢慢地优化,使用更好的开源实现,或者是直接购买一些商业实现库。
但是,如果发挥出来的整个体系成了不可替代的了,那这就不仅仅是一个数学分析工具了,而是一个从开始的需求分析,模型验证,以及到实现,整个设计流程都包含的工程平台了。
2.
楼主说的不能web,如果要把matlab作为服务器端语言,我确实还没有看到类似的应用。但是,如果只是一些网络应用,比如web crawler,网上其实挺多的。
matlab里面有几个简单的网络接口函数,比如urlread可以读取网页,还有xmlread。
这个函数是用java的库写的,因为matlab里面是集成了JVM的,其实在你的matlab 代码里面可以直接调用java的libraries。
只是,这些属于undocumented范畴,这里有个网站就专门挖掘这些:
Undocumented Matlab
目前的web server一般都是动态生成html页面了。我确实还没有见到这方面的应用。
但是,如果是生称静态的html页面,那么matlab其实一直都可以。
Cleve Moler的博客其实使用matlab写的:
MATLAB Central
上面链接里是Cleve Moler的一篇博客,这片博客里面有图片,有代码,还有文字。
Cleve在写这样一篇博客的时候,其实只是写了一个m文件,里面有注释,在cell mode里面注明了各个地方的title。然后在editor里面publish。
在发布的过程中,matlab会把运行结果中的图也自动加入最后生成的html文件里(图片放在单独文件夹)。
在m文件中还支持Latex,这些会在生称的html被自动转换成文字或者公式的图片。
在那篇的文末的右边,有个 “get the matlab code”链接,你可以把它的m文件下载下来自己看下,然后自己发布一下,看看生称的html文件是怎样的。
楼主说的脚本,其实matlab就是一种脚本语言。
这也是为什么它的调试会比较方便。
你不需要一个专门的入口,你可以从m文件的任何一个位置开始运行你的程序。
matlab的编辑器有一个cell mode,使用它,你可以把m中的任何一个你想要单独运行的部分放在一个cell里面,只执行这个cell。
另外,说到windows的操作。
在matlab里面可以直接执行dos命令。
所以在涉及到了windows的比较复杂一点的操作,可以用批处理写好batch,然后在matlab里面调用。
当然,你可以用matlab先生称一个batch,然后运行。
4.
最后,虽然matlab是一个商业软件。
但是在matlab这个商业平台上是有“开源社区”的。
matlab的File Exchange是一个很活跃的社区。
对比会发现,matlab强调的简易的操作以及全面的数学函数库(包涵了信号处理,图像处理,数值分析等库)其作用是让不善于编程的科研人员可以最短的时间内实现自己的算法。但其运算效率低下,占用资源巨大,完全无法应用于商业软件开发。而python一开始便定位为一种“开发语言”,它本身是具备开发语言的一切特征,小巧,高效(跟JAVA差不多)。但是其基本库不包涵太多数学工具,需要用户一个一个的再次安装。而且它也没有matlab当中很多集计算,显示,实时调整为一体的功能函数。
因此,python是不能取代matlab在某些领域的应用的。