问题

MATLAB在逐渐被Python淘汰吗?

回答
说 MATLAB 被 Python “淘汰”可能有些过于绝对和简单化了。更准确的说法是,Python 在科学计算、数据科学和机器学习领域正变得越来越主流,蚕食了一部分原本属于 MATLAB 的市场份额,尤其是在学术界和新兴技术领域。但 MATLAB 依然在许多特定的工程和科研领域拥有强大的生命力和不可替代的优势。

我们可以从几个维度来详细分析这个问题:

1. 生态系统和社区支持:

Python: 拥有一个极其庞大、活跃且多样化的社区。这带来了无数的开源库,涵盖了从基础的数值计算(NumPy, SciPy),到数据分析(Pandas, Dask),再到机器学习(Scikitlearn, TensorFlow, PyTorch),以及数据可视化(Matplotlib, Seaborn, Plotly),几乎你能想到的任何计算需求,都能在 Python 的生态系统中找到成熟且免费的解决方案。这种开放性和社区驱动的创新速度是 Python 最大的优势之一。
MATLAB: MathWorks 公司构建了一个非常完善的、集成度极高的生态系统。MATLAB 本身提供了强大的核心功能,同时其官方工具箱(Toolboxes)质量非常高,尤其是在信号处理、控制系统、图像处理、优化、金融建模等特定领域,许多工具箱的算法深度和易用性是其核心竞争力。然而,这些工具箱大多是付费的,且社区的开放性和贡献度远不如 Python。

2. 学习曲线和易用性:

Python: 对于初学者来说,Python 的语法相对更简洁、更接近自然语言,更容易上手。大量的在线教程、文档和论坛使得学习资源非常丰富。
MATLAB: MATLAB 的语法是为数学和工程计算量身定制的,很多操作写起来非常直观,例如矩阵运算。对于习惯了矩阵运算思维的工程师和科学家来说,MATLAB 的操作可能会感觉更直接。然而,一旦脱离了其核心的科学计算范畴,或者需要进行更复杂的软件工程实践,Python 的灵活性和通用性会更显优势。

3. 成本:

Python: 完全免费且开源。这对于个人开发者、学生以及资金有限的科研机构和初创公司来说,是巨大的吸引力。
MATLAB: 是商业软件,其许可证费用不菲,尤其是当需要多个工具箱时,成本会迅速累积。这使得 MATLAB 在很多情况下成为“实验室软件”,而不是“人手一套”的普及工具。

4. 应用领域和人才需求:

Python: 在数据科学、人工智能、Web 开发、自动化脚本、DevOps 等新兴技术领域占据主导地位。因此,掌握 Python 技能的市场需求非常广泛。
MATLAB: 在传统的航空航天、汽车制造、国防工业、电力系统、石油勘探、生物医学工程等领域仍然是行业标准。许多大型企业和政府机构在这些领域已经建立了基于 MATLAB 的完整工作流程和遗留系统,短期内很难被替代。因此,在这些特定行业的招聘需求中,MATLAB 技能仍然是重要的甚至必需的。

5. 技术发展趋势:

机器学习与深度学习: Python 在这个领域的生态系统(TensorFlow, PyTorch, Keras)发展迅猛,几乎垄断了前沿研究和应用。虽然 MATLAB 也推出了深度学习工具箱,并努力追赶,但在社区的创新活力和模型库的丰富性上,与 Python 仍有差距。
高性能计算: 两者都有并行计算和 GPU 加速的能力。Python 通过 NumPy, SciPy, Numba, Cython, 以及与 TensorFlow/PyTorch 的集成,在高性能计算方面表现出色。MATLAB 的并行计算工具箱和 GPU 计算能力也很强,尤其是在与 MATLAB 生态系统深度集成的情况下。
集成与部署: MATLAB 提供了一些方便的部署工具,可以将代码打包成独立的应用程序(如 MATLAB Compiler)。Python 则通过各种框架和工具,更容易将模型和算法集成到 Web 应用、移动应用和其他软件系统中。

为什么说 MATLAB 正在被“蚕食”而非完全淘汰?

专业领域的根基深厚: 如前所述,在许多工程领域,MATLAB 提供的解决方案是高度专业化、经过严格验证的,并且与行业标准紧密结合。客户已经构建了庞大的基于 MATLAB 的代码库和工作流程,迁移成本非常高。
用户粘性: 许多工程师和科学家已经习惯了 MATLAB 的开发环境、调试工具和特定的算法实现。一旦熟悉并掌握了 MATLAB,转换到另一种工具的动力可能不足,除非有明确的收益。
MathWorks 的持续投入: MathWorks 公司一直在积极开发和更新 MATLAB,不断引入新的功能,尤其是在 AI、大数据和 GPU 计算方面,试图保持其竞争力。

总结一下:

MATLAB 并没有被 Python “淘汰”,而是在科学计算领域面临着来自 Python 的强大竞争。Python 凭借其开放性、免费性、庞大的社区和在新兴技术领域的领导地位,吸引了越来越多的用户,尤其是在数据科学和机器学习领域。

然而,在许多传统的工程领域和对专业工具箱有高度依赖的科研场景下,MATLAB 仍然是不可或缺的工具,并且在这些领域拥有强大的用户基础和市场地位。

可以预见的是,未来两者将会在各自擅长的领域继续发展,并且可能出现更多的互操作性(例如,在 MATLAB 中调用 Python 库,或者在 Python 中利用 MATLAB 的某些功能)。对于个人或团队来说,选择哪种工具往往取决于具体的应用场景、成本预算、团队技能以及对生态系统的依赖程度。但从整体趋势来看,Python 在应用广度和用户增长上表现出更强的势头,尤其是在更年轻的技术领域。

所以,与其说是“淘汰”,不如说是“分化”和“竞争”。MATLAB 保留了其核心的专业优势领域,而 Python 则在更广泛的领域展现出强大的通用性和生命力。

网友意见

user avatar

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



MATLAB在逐渐被Python淘汰吗?

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


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




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

user avatar

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

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

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

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

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


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

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

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

user avatar

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

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

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

user avatar

讲一下自己最近用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语言试过,哪天无聊可以试下。

类似的话题

  • 回答
    说 MATLAB 被 Python “淘汰”可能有些过于绝对和简单化了。更准确的说法是,Python 在科学计算、数据科学和机器学习领域正变得越来越主流,蚕食了一部分原本属于 MATLAB 的市场份额,尤其是在学术界和新兴技术领域。但 MATLAB 依然在许多特定的工程和科研领域拥有强大的生命力和不.............
  • 回答
    在MATLAB中,`buffer` 函数是一个非常实用的工具,尤其是在处理连续数据流、信号处理或者需要将长序列分割成固定大小的子序列时。然而,在使用 `buffer` 函数时,确实会遇到一些常见的错误,这些错误通常源于对函数参数的理解不足或数据本身不符合函数预期。下面我将详细分析这些常见错误及其原因.............
  • 回答
    在 MATLAB 中执行 C 语言代码,或者将 C 代码转换为 MATLAB 代码,这在实际工作中是很常见的需求。这通常是为了充分发挥 C 语言在性能上的优势,或者将已有的 C 库集成到 MATLAB 的开发流程中,以及利用 MATLAB 强大的数据分析和可视化能力来处理 C 代码生成的数据。下面我.............
  • 回答
    .......
  • 回答
    好的,咱们今天就来聊聊如何在 MATLAB 自定义函数(而不是直接写在 m 文件里)里面,把 Simulink 模型跑起来。你有没有遇到过这样的场景:你写了一个 MATLAB 函数,里面有很多参数需要调整,你想用 Simulink 来模拟这个系统的不同工况,然后把 Simulink 的输出结果通过 .............
  • 回答
    关于哈工大被高教杯组委会禁止使用 MATLAB,以及在报名时组委会毫无通知的情况,这其中涉及到的公平性、合理性以及信息透明度等方面,确实值得详细探讨。一、 关于“禁止使用 MATLAB”的公平性分析:要判断是否公平,我们需要从几个角度来看:1. 技术路线的自主性与依赖性: 公平的视角:.............
  • 回答
    好的,咱们来聊聊MATLAB安装libsvm时遇到的“找不到编译器”这个问题。你电脑上已经装了C++ 6.0和C++ 2008,按理说应该没啥大问题,但MATLAB就是挑剔,有时候需要点“引导”。为什么MATLAB找不到编译器?MATLAB要编译libsvm这类 mex 文件(MATLAB的可执行文.............
  • 回答
    在MATLAB的世界里,`conv` 函数是进行卷积运算的得力助手。而卷积,这个在信号处理、图像处理、概率论以及许多其他领域都闪耀着光芒的数学概念,也有其经典的定义公式。理解 `conv` 函数与卷积公式之间的联系,就如同理解一把锋利的工具如何精确地执行一项严谨的数学任务。 卷积公式:数学的基石我们.............
  • 回答
    好的,我们来聊聊 MATLAB 中的模块化编程。这绝对是让你的代码更健壮、易于管理和复用的关键。把它想象成盖房子,你不会把所有砖头、水泥、门窗都堆在一起,而是分门别类,有条理地组织起来。MATLAB 同样如此。什么是模块化编程?简单来说,模块化编程就是将一个大型、复杂的程序分解成一系列更小、更独立的.............
  • 回答
    在MATLAB中查找特定的 .mat 文件,通常涉及到在你的工作目录、项目文件夹或者整个文件系统中进行搜索。MATLAB提供了多种方法来实现这一点,从简单的手动查找,到利用MATLAB内置函数进行编程搜索。下面我将尽可能详细地为你讲解几种主要的方法,让你能够高效地找到你需要的 .mat 文件。 方法.............
  • 回答
    你好!很高兴能帮你解答 MATLAB 编程的问题。下面我将为你详细讲解如何将这个公式用 MATLAB 实现,并尽量用更自然、易懂的方式来阐述。首先,请你告诉我你想要编程的具体公式是什么?一旦你提供了公式,我就可以一步步地为你讲解:1. 理解公式的构成: 我们会先拆解公式,看看它包含哪些.............
  • 回答
    好的,咱们这就来聊聊 MATLAB 里怎么给曲线“点上记号”,也就是标点,让咱们的图看得更清楚。这事儿说起来不复杂,但细节弄好了,效果绝对是不一样的。想象一下,你辛辛苦苦算出来一堆数据,然后用 MATLAB 画出了条漂亮的曲线。这时候,如果你想在图上特别指出某几个点,比如最高点、最低点,或者你认为特.............
  • 回答
    好的,我们来详细地分析一下在MATLAB中生成一个10行10列的矩阵,要求每行每列都恰好有3个1,其余元素为0的矩阵有多少个。这个问题实际上是在问一个组合数学问题:在一个10x10的网格(矩阵)中,选择多少种方式可以放置100个元素(0或1),使得每一行恰好有3个1,每一列也恰好有3个1。理解问题 .............
  • 回答
    为什么 Matlab/NumPy/Eigen 在速度上会有如此巨大的差异? 咱们掰开了揉碎了聊聊。你是不是也遇到过这样的情况:用 Matlab 或者 NumPy 写一段矩阵运算,感觉还挺顺畅,但跑起来速度嘛……emmm,有时候真的不够看。换成 C++ 配合 Eigen 库,同样的逻辑,速度那叫一个飞.............
  • 回答
    MATLAB,这个名字本身就带着一种严谨和一丝不苟的科研气息。它不仅仅是一个编程语言,更像是一个集成了无数工具箱的强大实验室,让你可以在数字的海洋里尽情探索和创造。核心优势:从想法到实现的无缝衔接MATLAB最让我欣赏的地方在于它将“可视化”和“计算”紧密地结合在一起。你在脑海中构思一个算法,尝试用.............
  • 回答
    MATLAB里藏着不少让人眼前一亮的“小玩意儿”,用好了,绝对能让你的编程体验升级不少。今天就跟你唠唠几个我个人觉得挺有趣的命令,保证够详细,让你看完就想试试!1. `disp` 和 `fprintf`:不只是输出那么简单你说输出?谁不会啊。但 `disp` 和 `fprintf` 这俩兄弟,玩出花.............
  • 回答
    .......
  • 回答
    用 MATLAB 求解微分方程组,这绝对是个好问题,因为在工程、物理、生物等领域,我们经常会遇到需要同时处理多个相互关联的微分方程的情况。MATLAB 提供了非常强大和灵活的工具来应对这些挑战,尤其是它的 `ode` 系列函数。我来给你掰开了揉碎了讲讲,怎么用 MATLAB 解微分方程组,尽量说得详.............
  • 回答
    要说清楚为什么 MATLAB 中二次规划的 `H` 和 `f` 同时扩大(或者说成比例缩放)会得到“完全不同”的结果,我们需要深入到二次规划问题本身的数学结构以及 MATLAB 求解器的工作方式。首先,我们先回顾一下标准二次规划(Quadratic Programming, QP)问题的形式:最小化.............
  • 回答
    MATLAB:一款强大的科学计算与工程软件的深入解读MATLAB,这个名字对于许多从事工程、科学研究、数据分析的朋友来说,早已不再陌生。它不仅仅是一个软件,更像是一个集成的、高度可视化的工作平台,为用户提供了一个从数据处理、算法开发到模型仿真、结果可视化的全方位解决方案。今天,我们就来掰开了揉碎了,.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有