百科问答小站 logo
百科问答小站 font logo



MATLAB在逐渐被Python淘汰吗? 第1页

  

user avatar   mai-wen-xue-67 网友的相关建议: 
      

五六年前俺就已经很好奇, 为什么大家不用 GNU Octave.



MATLAB在逐渐被Python淘汰吗?

窃以为还不会, 但随着高校师生越来越喜欢免费的软体/软件, MATLAB 这种吸金大户会越来越式微。 也许结局就是 Software as a service (SaaS) 。


电路仿真有免费的 ADI LTspice 和 gEDA 等等。




** 别等到被禁用才想到找替代


user avatar   lshshshm 网友的相关建议: 
      

如果是把Matlab当成编程语言,Matlab确实在被Python淘汰,因为Python开源,好用。

但是说实话真正用Matlab的人,大部分其实是用Matlab的工具箱,这才是Matlab最大的护城河。这部分Python根本取代不了。

比如Simulink,在汽车行业几乎是人人必会的技能,建模,仿真,生成代码。整个汽车行业的软件开发需要大量的专业软件,而且非常的贵,这不是开源能取代的。

Matlab有太多的工具箱,说实话,只有相关行业的人才明白这些工具箱的重要性。

另外,matlab2021版有28G左右的大小,大部分的人使用的功能只是很小一部分。


从学习的角度,最好都要会一点。技多不压身,更何况这二者上手难度都很低

特别是工科的学生,一定要学会用matlab的帮助文档,里面有大量专业的知识,非常有借鉴作用。比如矩阵的运算,拟合,控制系统,各种滤波器。

另外,matlab计算结果的可靠性非常高。


user avatar   zr9558 网友的相关建议: 
      

当年在学术圈的时候,Matlab 基本上就是计算数学专业,金融数学科研人士的首选啊,身边不少的 PHD 都是选择用 Matlab 来运行自己的程序。在本科学习计算数学的时候,大家也是会选择使用 Matlab 来进行编程,毕竟如果用 C++ 这种语言,确实会有很多坑。科研的时候最主要的是想法,有卓越的想法是最应该考虑的事情,如果花时间长期处理一些编码上面的问题确实是没有必要的。学术界的合作人数毕竟是有限的,一般情况下合作者有个十几二十个就已经很多很多很多了。这种情况下,大家都使用 Matlab 是可以理解的。

后来到了互联网工业界,基本上就再也没见到 Matlab 的身影了,如果是互联网的话,工业界不少的工作内容都需要跟别人对接。如果使用 Python,肯定能够找到可以对接的人,哪怕改写成 C++ 也不是不可以。但是如果使用 Matlab,那真的就不好找人对接工作了,只能够自己搞一些离线的数据来进行试验和分析。工业界的工作还存在一个上线使用的问题,这种时候就要对接公司的各个系统和服务器,用 Python 的优势明显会比 Matlab 大。而且 Python 各种开源库十分丰富,也是免费的,能够做的事情真的很多。

如果是机械工程方向的话,就看老师的要求和未来求职方向吧。不过多学一两门语言也不是太困难的事情,毕竟两门一起学也花不了多少时间,也掌握了多个技能。


user avatar   qiu-shui-20-54 网友的相关建议: 
      

讲一下自己最近用python做仿真的血泪史。

曾几何时,为了拥抱python,我也将自己日常科研中提出的算法都拿numpy,scipy以及其他第三方packages来仿真和验证。然而最近有两次,我的两个算法原型在python里验证怎么都得不到和理论上完全一致的结果。第一个根本没法得到reasonable的结果,第二个可以得到部分一致的结果,但是python求解用到的时间特别长。检查了N遍代码以及我的方法,都无法做到consistent,百思不得其姐到怀疑人生。最后抱着试试看的想法,把python代码对照着在matlab里逐句转换了一遍。神奇的事情发生了,第一个实验matlab里当场给出和理论上consistent的结果,第二个实验不仅得到consistent的结果,而且速度提高了N倍。。。

代码一样,但结果却是天差地别。究其原因我认为可能是正如 @清雨影 大佬所说,matlab在求逆、产生随机数、矩阵分解等函数上进行了比numpy、scipy相对应的函数,要多得多和细致得多的优化。因为这些函数对用户来说都是黑盒,所以要人工检差是否是这些黑盒引起的偏差实在是太麻烦了。所以如果想要快速、省心的初步验证一些自己的想法是否work,强烈推荐直接上MATLAB。。。

当然上面说的仅限于科学计算相关。

总结起来,大概是尽管matlab在“人无我有”方面正在走下坡路,但是在“人有我好”方面目前还有很大优势。

------更新-------

评论区有朋友提醒说,前后结果不同,是否可能是由于python的"pass by reference"(更准确说是"pass by assignment")引起的。刚才花了点时间就这一问题重新检查了我第一个实验的代码,没有出现这种把"pass by reference"和"pass by value"混淆的错误。

------二更---------

评论区也有朋友指出,matlab和numpy的linear algebra等相关数学函数都是基于(甚至直接使用)的intel所提供的BLAS (basic linear algebra subprograms)和MKL (Math Kernel Library)。也就是说,不论用python还是matlab,诸如矩阵乘法的运算,可能本质上用的都是BLAS和MKL。去查了matlab文档,确实有说

"In the year 2000, MATLAB migrated to using LAPACK, which is the modern replacement for LINPACK and EISPACK. It is a large, multi-author, Fortran library for numerical linear algebra. LAPACK was originally intended for use on supercomputers because of its ability to operate on several columns of a matrix at a time. The speed of LAPACK routines is closely connected to the speed of the Basic Linear Algebra Subroutines (BLAS). The BLAS version is typically hardware-specific and highly optimized."

不过,目前不能确定“产生随机数”部分二者是否有区别。另外,第一个实验里我还用了ode solver,python里是scipy.integrate.odeint,matlab里用的是ode45。ode solver应该可以确定scipy和matlab还是有很大区别的,评论里也有朋友指出。我也在网上找到了有人对不用语言的ode solver性能做的实验比较,贴在这里。根据链接里的实验结果,Julia>>Matlab>=Scipy。。。(难道下一次赶时髦要搞起Julia了?)

-----三更-------

我没在matlab和python里主动开GPU,除非matlab会默认打开GPU,从安装matlab之后我没做过关于GPU方面任何的改动。

没有用R语言试过,哪天无聊可以试下。




  

相关话题

  我学编程为什么难?是思维方式不对还是学习方式不对? 
  为什么 Dropbox 等大型服务使用 Python 作为主要语言,即使它的效率比其他编译型语言低几个数量级? 
  C# 的匿名类型为什么要限制属性为只读呢? 
  在院士手下学习工作是种什么样的体验? 
  生育多少个子女才能保证自己的所有染色体“几乎”都传递给下一代? 
  现在 c++中 long 整数类型还有使用的意义吗? 
  科研工作者和普通人有哪些不同? 
  为什么企业微信没有Linux版本? 
  为什么大部分码农做不了软件架构师? 
  进程被操作系统加载之后,磁盘上的二进制文件可以删掉吗?如果删掉对正在运行的进程有什么影响吗? 

前一个讨论
计算机科学与技术专业学生买笔记本,中央处理器选超威半导体(AMD) 好还是英特尔(Intel) 好?
下一个讨论
亲爱的陌生人,可以随便送我一句话嘛?





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利