matlab代码转python过程中的小记录
文章目录
- 起因
- 一、怎样尽快将matlab代码转成Python?
- 二、怎样尽量加快计算?
- 三. 一不小心矩阵太大内存爆了怎么办?
- 结尾
起因
进一阵子因为需要用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库,其中包装了和numpy、scipy同名的许多函数,用法相似,不过能在GPU上进行运算。
- 可以试一下使用python自带的multiprocessing(进程并行)调用多个CPU。我的理解是,将任务分成很多可以同时进行的进程,python的GIL锁限制一个不调用numpy的python进程只能用一个CPU,那我一个任务拆分成一堆进程,最后再将这些进程的结果进行汇总,也可以达到调用多个CPU的目的,不过注意,进程的建立和释放都是有开销的。
三. 一不小心矩阵太大内存爆了怎么办?
好像没什么特别简单的办法,我是直接将一个大矩阵划分成一个个小矩阵计算,最后再拼接出一个大矩阵,这种方式主要的作用是,至少避免中间生成的临时矩阵和原矩阵一样大。
结尾
有大佬有更好的方法的话希望可以在评论区分享一下~
matlab代码转python过程中的小记录相关推荐
- 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)
利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录) 作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...
- java学习中,DVD管理系统纯代码(java 学习中的小记录)
java学习中,DVD管理系统纯代码(java 学习中的小记录)作者:王可利(Star·星星) class DvdMain{public static void main (String[] args ...
- 学习Python过程中的一些记录,慢慢更新中,希望能坚持下去~
文件读取错误 Image data cannot be converted to float 这个出现的的原因一般是没有读取到所需图片,一般是路径问题,也有可能是图片不合规范,这时候将图片或者文件放到 ...
- python运行过程中会被编译成二进制_Python代码在运行过程中,会被编译成二进制代码。_学小易找答案...
[单选题]1. ( )是违反设备安全操作规程的错误做法. [单选题]Thank you for your letter ___________ 24th March. (1.0分) [单选题]超外差接 ...
- python数据分析实训心得_Python代码在实践过程中的经验总结
Python代码在实践过程中的经验总结 关于Python脚本,在具体的实践过程中经常会遇到一些问题,下面将其总结,便于使用.考虑使用 Logger(logger 怎么配置,需要输出哪些信息 - 可以反 ...
- matlab 代码转 Python
可以使用 MATLAB 工具箱 "MATLAB 集成工具" 将 MATLAB 代码转换为 Python 代码.这个工具箱可以自动将大部分 MATLAB 代码转换为类似的 Pytho ...
- 苹果使用过程中的小技巧(合集)
苹果使用过程中的小技巧(合集) 苹果机通电开机后,底层会进行一系列自检,若能通过,就回听到那有名的"咚...", 然后由openfirm引导OS启动. 如果自检遇到问题,则会发出1 ...
- c 语言500行小游戏代码,500行代码使用python写个微信小游戏飞机大战游戏.pdf
500行行代代码码使使用用python写写个个微微信信小小游游戏戏飞飞机机大大战战游游戏戏 这篇文章主要介绍了500行代码使用python写个微信小游戏飞机大战游戏,本文通过实例代码给大家介绍的非常详 ...
- ESXi与物理交换机静态链路聚合配置过程中的小陷阱
作者:陆斌 文章来自微信公众号:平台人生 内容简介:ESXi与物理交换机之间配置静态链路聚合时,因为静态链路聚合的特点,在进行down网卡和从虚拟交换机移除网卡的操作时,可能会无法完成故障流量切换,影 ...
最新文章
- [ CodeVS冲杯之路 ] P1116
- Gut: 妊娠期糖尿病与孕妇及其新生儿微生物菌群失调有关(赵方庆作品)
- Windows10下编译NCNN安卓NDK
- elementui el-dialog 离顶部的位置_驻马店建筑物避雷带的安装位置,本月报价
- Microsoft Build 2021大会开始后,Develop Blog一系列更新
- 10个舍不得删的高质量公号
- Java Code之多态
- python wmi 显卡型号_python - wmi模块学习(windwos硬件信息获取)
- 为什么 Kubernetes 是微服务发展的必然产物?
- Python入门学习十:Python绘图
- xp系统怎么查看计算机共享文件夹,xp系统提升查看局域网共享文件速度方法分享...
- 尘梦回还服务器在维护中是什么意思,20190925维护公告解读
- QML树控件TreeView的使用(上)
- java super构造函数_Java为什么this()和super()必须是构造函数中的第一条语句?...
- 如何在一个月内快速瘦20斤?
- maven指定本地仓库
- linux(07)之内核系统调用
- 二极管专题:二极管钳位电路
- rtx 加密机制_RTX发送消息提醒实现以及注意事项
- 黄梯云主编管理信息系统课后答案1-6