起因
进一阵子因为需要用python来跑一些matlab的代码,实际上python可以直接调用matlab代码(可以直接用matlab.engine包),不过当时弄了一阵子没弄明白参数的调用的逻辑,索性就将matlab代码转成Python了。
一、怎样尽快将matlab代码转成Python?
根据我所搜索到的信息,numpy库和matlab的操作近似,如果想尽快把matlab代码转成python代码并运行起来,使用numpy库会比较方便。不过要注意,numpy中两个矩阵相乘是元素对应相乘,比如说python代码C = A * B
相当于matlab代码C = A .* B
,如果想进行矩阵运算中的乘法,则需要用.dot来进行相乘,比如说python代码C = A.dot(B)
相当于matlab代码C = A * B
。
二、怎样尽量加快计算?
matlab在进行矩阵运算时,能够自动调用多个CPU,而Python正常情况下因为GIL锁,一般情况下只能调用1个CPU,就造成了运算上的瓶颈,这种情况下,解决方法有多种:
- numpy库的简单矩阵运算能够自动使用多个CPU(dot, +, -, *)因为其底层源码好像说是用C写的,不受python的GIL锁限制。
- 如果希望通过调用GPU的形式来进行并行运算,可以尝试cupy库,其中