【问题标题】:Should I put effort on learning Matlab if I already know and use Numpy/Scipy [closed]如果我已经知道并使用 Numpy/Scipy,我是否应该努力学习 Matlab [关闭]
【发布时间】:2012-08-14 03:16:34
【问题描述】:

我使用并喜欢 Numpy 和 Scipy,但在我参与的其中一个领域(生物力学研究)中,MATLAB 占据了主导地位。

我相信这种主导地位很大程度上是由于传统,类似于 Windows 或 Office 的情况,但也许有一些内在的理由偏爱其中一个。

目前我可以用 Numpy/Scipy 解决大多数数据分析问题,但我看到研究人员一提到它时脸上的尴尬。

真正的问题是:如果我已经了解 Numpy/Scipy,是否真的有必要学习 Matlab?

【问题讨论】:

  • Matlab 适合专业人士,Numpy/Scipy 适合业余爱好者。选择您想加入的俱乐部。我将其发布为评论,因为这是一种观点,而不是答案。这也是一种观点,我不会改变其他人在这里发布的任何内容:-)
  • "Matlab 适合专业人士,Numpy/Scipy 适合业余爱好者。" 意见!
  • @HighPerformanceMark 我猜研究界有很多业余爱好者在用 numpy/scipy 解决各种非常困难的问题。谁能想到他们在这样一个微薄的俱乐部里能取得如此大的成就。
  • (关于结束这个问题,我认为它可能会发生并且不太在意,但是因为我已经在 SO 中阅读了很多类似的 X 与 Y 问题,他们总是帮了很多忙作为在知情决定之前收集信息,我会要求在实际关闭之前让更多的答案和 cmets 进入。谢谢。)

标签: matlab numpy scipy


【解决方案1】:

假设您申请在我的实验室工作。你说“我知道 Numpy/Scipy”。然后我说“太棒了,那么你学习 Matlab 会容易得多”。为什么?因为我们的代码库在 Matlab 中,我们合作者的代码库在 Matlab 中,我不会付钱给你重新发明轮子,我不会付钱给你写不能轻易集成到其他软件中的代码。人们的项目。

简而言之:如果一个领域主要使用一种语言,并且您想在该领域工作,那么了解该语言非常有用。

【讨论】:

  • 虽然第一段有点粗略,但最后一段非常切中要害。 +1 并等待可能接受。
【解决方案2】:

学习新的编程语言永远不会有坏处。只有学习才能让自己变得更好。所以问题归结为你想努力学习 MatLab。

【讨论】:

    【解决方案3】:

    Numpy/Scipy 的优点

    • 比 MATLAB 更快,尤其是当您的代码中有非常大的 for 循环(或嵌套的 for 循环)时。 MATLAB 有高度优化的矩阵操作,我认为它们也有一个并行化的 for (parfor)
    • 免费
    • 没有许可问题,因此您可以像运行一千个代码实例一样运行,而不必担心需要一千个许可。

    MATLAB 的优点:

    • MATLAB 有很多非常棒的内置软件包(例如整个统计工具箱)。
    • MATLAB 非常适合有效地制作漂亮的绘图(如果您知道 Matplotlib,那么请忘记这个 Pro)。
    • 您所在行业的每个人目前都在使用它。您可以将此归因于人们不愿意学习如何编程,或者某些群体的固执或传统等……但这并不能改变这两件事:(1)您可能会比他们学习 MATLAB 更快地学习python 和(2)如果您能够有效地沟通并成为更广泛的研究人员社区的一部分,您的目标就会更好地实现......是吗?

    【讨论】:

    • 我实际上不同意 MATLAB 速度较慢的观点。 Mathworks 在过去几年中为 Matlab 添加了大量优化。编写良好的代码,即使使用 for 循环,也可以非常高效,并接近与 C 相同数量级的速度。
    • 看起来Matlab内置了一些编译基础结构。
    • @heltonbiker 是的,MATLAB 中有一个 JIT 加速器,尽管没有官方文档:请参阅 MATLAB Central 中的 answer
    • @thewopr - 我是根据个人经验说的 - 如果我在 MATLAB 中执行 1e6 次 for 循环,这对我来说很糟糕。但是在python中,我可以做到。这就是 在 MATLAB 中对所有可能的东西进行矢量化之后。但我理解这一点是有争议的。得分。
    【解决方案4】:

    正确的答案真的取决于你的情况。

    在演示过程中使用 Matlab 来防止滑稽面孔不是使用该语言的正确理由。如果有人因为您使用 Python 而不是 Matlab 而不能接受您的结果,那么他们就证明了他们作为科学同行的弱点。他们应该根据数据、结果和对这些结果的解释来判断你的工作。如果您正确实现模型,则用于实现它们的语言应该对结果没有影响,如果确实如此,则说明您的模型存在问题。

    但是,如果您所在领域的工作是协作的,那么学习同行的语言可能会更好。您希望您的同行将您的工作融入他们自己的工作中。可悲的是,他们中的许多人会认为将 Python 翻译成 Matlab 的门槛太高,因此放弃了。

    所以只有你可以决定是否有必要学习 Matlab,尽管它可能会是有利的。

    【讨论】:

    • 有趣的是,在评委们对开源库持怀疑态度的同时(毕竟,谁知道里面有什么代码,以及它是否做对了?),他们会采取理所当然地,仅仅因为在商业软件上运行了分析,它就自动值得信赖。我并不是说 Matlab 不好,或者 Numpy 不好,但我认为“Garbage-In-Garbage-Out”预防更多地依赖于人和研究方法而不是工具,而且无论如何没有人知道 Matlab 源代码里面有什么代码,毕竟...
    【解决方案5】:

    我使用并喜欢 Numpy/Scipy 和 MATLAB,在我看来它们是互补的,与偶尔的用户通常认为的重叠要少得多。

    是的,我认为你确实有必要学习 MATLAB,至少可以验证我上面的不合理断言是否正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-04
      • 2011-04-17
      • 2011-04-06
      • 2015-12-05
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多