文章目录

  • 起因
  • 一、怎样尽快将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,就造成了运算上的瓶颈,这种情况下,解决方法有多种:

  1. numpy库的简单矩阵运算能够自动使用多个CPU(dot, +, -, *)因为其底层源码好像说是用C写的,不受python的GIL锁限制。
  2. 如果希望通过调用GPU的形式来进行并行运算,可以尝试cupy库,其中包装了和numpy、scipy同名的许多函数,用法相似,不过能在GPU上进行运算。
  3. 可以试一下使用python自带的multiprocessing(进程并行)调用多个CPU。我的理解是,将任务分成很多可以同时进行的进程,python的GIL锁限制一个不调用numpy的python进程只能用一个CPU,那我一个任务拆分成一堆进程,最后再将这些进程的结果进行汇总,也可以达到调用多个CPU的目的,不过注意,进程的建立和释放都是有开销的。

三. 一不小心矩阵太大内存爆了怎么办?

好像没什么特别简单的办法,我是直接将一个大矩阵划分成一个个小矩阵计算,最后再拼接出一个大矩阵,这种方式主要的作用是,至少避免中间生成的临时矩阵和原矩阵一样大。

结尾

有大佬有更好的方法的话希望可以在评论区分享一下~

matlab代码转python过程中的小记录相关推荐

  1. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)

    利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)   作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...

  2. java学习中,DVD管理系统纯代码(java 学习中的小记录)

    java学习中,DVD管理系统纯代码(java 学习中的小记录)作者:王可利(Star·星星) class DvdMain{public static void main (String[] args ...

  3. 学习Python过程中的一些记录,慢慢更新中,希望能坚持下去~

    文件读取错误 Image data cannot be converted to float 这个出现的的原因一般是没有读取到所需图片,一般是路径问题,也有可能是图片不合规范,这时候将图片或者文件放到 ...

  4. python运行过程中会被编译成二进制_Python代码在运行过程中,会被编译成二进制代码。_学小易找答案...

    [单选题]1. ( )是违反设备安全操作规程的错误做法. [单选题]Thank you for your letter ___________ 24th March. (1.0分) [单选题]超外差接 ...

  5. python数据分析实训心得_Python代码在实践过程中的经验总结

    Python代码在实践过程中的经验总结 关于Python脚本,在具体的实践过程中经常会遇到一些问题,下面将其总结,便于使用.考虑使用 Logger(logger 怎么配置,需要输出哪些信息 - 可以反 ...

  6. matlab 代码转 Python

    可以使用 MATLAB 工具箱 "MATLAB 集成工具" 将 MATLAB 代码转换为 Python 代码.这个工具箱可以自动将大部分 MATLAB 代码转换为类似的 Pytho ...

  7. 苹果使用过程中的小技巧(合集)

    苹果使用过程中的小技巧(合集) 苹果机通电开机后,底层会进行一系列自检,若能通过,就回听到那有名的"咚...", 然后由openfirm引导OS启动. 如果自检遇到问题,则会发出1 ...

  8. c 语言500行小游戏代码,500行代码使用python写个微信小游戏飞机大战游戏.pdf

    500行行代代码码使使用用python写写个个微微信信小小游游戏戏飞飞机机大大战战游游戏戏 这篇文章主要介绍了500行代码使用python写个微信小游戏飞机大战游戏,本文通过实例代码给大家介绍的非常详 ...

  9. ESXi与物理交换机静态链路聚合配置过程中的小陷阱

    作者:陆斌 文章来自微信公众号:平台人生 内容简介:ESXi与物理交换机之间配置静态链路聚合时,因为静态链路聚合的特点,在进行down网卡和从虚拟交换机移除网卡的操作时,可能会无法完成故障流量切换,影 ...

最新文章

  1. [ CodeVS冲杯之路 ] P1116
  2. Gut: 妊娠期糖尿病与孕妇及其新生儿微生物菌群失调有关(赵方庆作品)
  3. Windows10下编译NCNN安卓NDK
  4. elementui el-dialog 离顶部的位置_驻马店建筑物避雷带的安装位置,本月报价
  5. Microsoft Build 2021大会开始后,Develop Blog一系列更新
  6. 10个舍不得删的高质量公号
  7. Java Code之多态
  8. python wmi 显卡型号_python - wmi模块学习(windwos硬件信息获取)
  9. 为什么 Kubernetes 是微服务发展的必然产物?
  10. Python入门学习十:Python绘图
  11. xp系统怎么查看计算机共享文件夹,xp系统提升查看局域网共享文件速度方法分享...
  12. 尘梦回还服务器在维护中是什么意思,20190925维护公告解读
  13. QML树控件TreeView的使用(上)
  14. java super构造函数_Java为什么this()和super()必须是构造函数中的第一条语句?...
  15. 如何在一个月内快速瘦20斤?
  16. maven指定本地仓库
  17. linux(07)之内核系统调用
  18. 二极管专题:二极管钳位电路
  19. rtx 加密机制_RTX发送消息提醒实现以及注意事项
  20. 黄梯云主编管理信息系统课后答案1-6

热门文章

  1. 【运维】互联网端口扫描导致的服务异常
  2. Laravel Model数据操作
  3. C 判断奇偶数与循环输入实现
  4. 搭建 HoloLens 开发环境
  5. 使用旅游电商系统对旅行社的四大好处
  6. 基于springboot layui新闻发布网站前后端源码
  7. 微信公众号服务器配置和php代码分析
  8. 浪潮云说 | 构建个人信息的“金钟罩”
  9. Linux下wine能运行游戏吗,Linux下用Wine玩游戏卡吗
  10. OAF的Table中,LOV列依赖一个messageStyledText列