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网卡和从虚拟交换机移除网卡的操作时,可能会无法完成故障流量切换,影 ...
最新文章
- 无法量产自动驾驶汽车的企业,与谷歌公司差在哪儿
- .NET,你忘记了么?(二)——使用using清理非托管资源
- 【采用-决策引擎】一文看懂风控决策引擎搭建思路
- 17、java中的集合(4)
- 前端面试1:CSS布局
- 如何上传文件及文件夹到IPFS
- 01、滤波器设计——LC滤波器设计
- 跟踪fork: Resource temporarily unavailable的原因
- webui之简单知识梳理
- 烤仔TVのCCW | 智能合约间的四种调用(下)
- 鸿蒙系统开始测试了,华为开始测试鸿蒙系统,百万台华为手机正在测试中,网友:厉害了...
- 3个技术男搞恋爱版 ChatGPT,估值70亿...
- deepin-wine
- XML Httprequest对象
- 关于IOS系统,H5页面操作history.go(n)回退页面时不会刷新页面数据的问题
- 图灵数学·统计学系列
- CloudOS,一站式云原生开发平台
- android圆形点击效果,Android 三种方式实现自定义圆形页面加载中效果的进度条
- B75对应的服务器芯片组,技嘉GA-B75M-D3V的主板架构是什么
- FPGA触摸按键控制LED——拓展:按下之后LED闪烁,再次按下停止闪烁
热门文章
- xshell生成公钥私钥并实现登录
- STM32驱动Marvell 88W8686 WiFi模块代码说明(20180129版)
- DllUnregisterServer 的调用失败,错误代码为0x8002801c
- Python跟我说0.1+0.2!=0.3,难道这么多年的数学白学了?
- 2021年高压电工考试内容及高压电工考试试卷
- 计算机基础1056大作业答案,《计算机基础》大作业(答案)
- 文60个有用CSS代码片段
- 天津天地伟业程序员怎么样_第一批市级制造业单项冠军培育企业名单公布 天津制造业 铸造创新驱动发展强引擎...
- 【干货】微信公众号运营必备工具(完整版)
- python命令行参数 空格_Python - 命令行参数