文章目录

  • 起因
  • 一、怎样尽快将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. 无法量产自动驾驶汽车的企业,与谷歌公司差在哪儿
  2. .NET,你忘记了么?(二)——使用using清理非托管资源
  3. 【采用-决策引擎】一文看懂风控决策引擎搭建思路
  4. 17、java中的集合(4)
  5. 前端面试1:CSS布局
  6. 如何上传文件及文件夹到IPFS
  7. 01、滤波器设计——LC滤波器设计
  8. 跟踪fork: Resource temporarily unavailable的原因
  9. webui之简单知识梳理
  10. 烤仔TVのCCW | 智能合约间的四种调用(下)
  11. 鸿蒙系统开始测试了,华为开始测试鸿蒙系统,百万台华为手机正在测试中,网友:厉害了...
  12. 3个技术男搞恋爱版 ChatGPT,估值70亿...
  13. deepin-wine
  14. XML Httprequest对象
  15. 关于IOS系统,H5页面操作history.go(n)回退页面时不会刷新页面数据的问题
  16. 图灵数学·统计学系列
  17. CloudOS,一站式云原生开发平台
  18. android圆形点击效果,Android 三种方式实现自定义圆形页面加载中效果的进度条
  19. B75对应的服务器芯片组,技嘉GA-B75M-D3V的主板架构是什么
  20. FPGA触摸按键控制LED——拓展:按下之后LED闪烁,再次按下停止闪烁

热门文章

  1. xshell生成公钥私钥并实现登录
  2. STM32驱动Marvell 88W8686 WiFi模块代码说明(20180129版)
  3. DllUnregisterServer 的调用失败,错误代码为0x8002801c
  4. Python跟我说0.1+0.2!=0.3,难道这么多年的数学白学了?
  5. 2021年高压电工考试内容及高压电工考试试卷
  6. 计算机基础1056大作业答案,《计算机基础》大作业(答案)
  7. 文60个有用CSS代码片段
  8. 天津天地伟业程序员怎么样_第一批市级制造业单项冠军培育企业名单公布 天津制造业 铸造创新驱动发展强引擎...
  9. 【干货】微信公众号运营必备工具(完整版)
  10. python命令行参数 空格_Python - 命令行参数