python 实现matlab中的系统辨识 python matlab 知乎_MATLAB


知乎视频www.zhihu.com


我正巧两个语言都比较常用(我是从2010年开始使用MATLAB的, 从2013年开始使用Python.),从我的专栏里面就可以看出来:


MATLAB Python 机器学习www.zhihu.com

python 实现matlab中的系统辨识 python matlab 知乎_Julia_02


基于我的使用经验(肯定是不全面的, 比如我不用MATLAB的Simulink, 仅供参考):

Python强于MATLAB的地方:

1 可视化

主要归功于Seaborn库。

老版本的MATLAB绘图丑爆了, 新版本(最近几年, 具体哪个版本开始记不清了)的MATLAB绘图系统有大更新, 有美化, 但是还是不如seaborn.

知乎用户:仅就作图而言,Python 和 MATLAB 有可比性吗?www.zhihu.com



2 机器学习

主要归功于scikit-learn。

从模型的个数和API统一性来看, scikit-learn完爆MATLAB.

3 深度学习

主要归功于pytorch,TensorFlow。

更新一下: 从R2019b开始, 引入了dlarray格式, 可以实现自动求导(梯度), 理论上应该具备和pytorch, Tensorflow一样从底层构建深度学习模型的能力, 实际效果怎么样, 我也是刚刚更新版本, 还不太清楚, 等我用过一段时间再说.

4 数据处理

主要归功于pandas库。

pandas简直是是神器, 这个没办法, 不是MATLAB太弱, 是pandas太强.

关于pandas是否强大, 不能从大类功能来看, 关键在于细节和质量.

比如马拉多纳和一个业余球员, 从大类技术上, 是一样的, 都会传球, 头球, 射门, 盘带等等. 但是质量上相差十万八千里.

我不是说pandas与MATLAB的差距有这么大, 只是想说明进行比较的时候, 不能从大类上比较, 要看细节, 看质量.

5 循环加速

主要归功于numba库.

MATLAB的循环加速的话, 目前来看, 好像只能靠mex技术(本质上是用C/C++语言重写).

我之前写过相关的性能测试文章:

[高性能实战案例] MATLAB,Julia, Python(Numba)


https://zhuanlan.zhihu.com/p/53416615zhuanlan.zhihu.com


结果汇总一下(取平均值, 单位是秒):
MATLAB的向量化版: 10.207570
Julia的向量化版: 5.251
Julia的loop版: 2.952
Julia的loop2版: 1.731
Julia的loop3版: 0.321392
Python的numba版: 0.477

Julia, Python(Numba), C++, MATLAB 性能测试之“冰雹数”


https://zhuanlan.zhihu.com/p/51583154zhuanlan.zhihu.com


运行时间总结(单位是秒), 取每种语言速度最快的那个版本:
MATLAB: 4.134375
Julia(@inbounds) 1.142
C++(我写的代码): 1.869
Python(numba) 1.13

MATLAB的地方强于Python的地方:

1 信号处理

2 IDE

MATLAB的IDE设计出来就天生适合做数据分析的. Python的Spyder就模仿MATLAB的界面, 但是只模仿了一部分, 还是不如MATLAB.

3 各种工具包统一的数据格式。

Python的各个包是不同的作者团队独立开发的, 因此, 难以做到数据格式统一, API统一.

总结:

Python发展迅猛, 已经抢占了不少领域了, 比如数据分析, 机器学习, 深度学习.

MATLAB还是有它优势的领域, 这些领域暂时无法被替代.