Python如何调用MATLAB编译的动态链接库dll

  1. 前言

本文是一次python调用matlab编译成的动态链接库的简单尝试,为了有需求的朋友可以学习如何完成自己matlab代码的编译和python调用,主要用于某些项目不方便安装matlab运行环境的情况。

本文主要是实现用python调用matlab写的加法函数,主要流程如下:

2. MATALB编译为动态链接库dll

这部分介绍如何利用MATLAB Coder工具实现addition函数的编译。

2.1 addition.m函数和test.m测试程序

addition.m函数,主要输出a+b的值。

function out = addition(a, b)
s = a + b;
out =s;
end

test.m测试程序,用于MATLAB Coder测试addition函数。

a=1;
b=1;
c = addition(a,b);

2.2 MATLAB Coder编译addition.m函数

采用MATLAB Coder编译addition.m函数的主要步骤包括:

(1)打开addition.m和test.m所在文件夹,并打开MATLAB Coder APP。

(2)输入要编译的函数名,本文为addition.m函数,输入后点击Next。

(3)点击Next。

(4)输入测试脚本名称,本文为test.m文件,输入后按回车键,出现addition.m函数两个输入形参及其类型。

(5)根据实际需求,选择addition.m函数两个输入形参类型,本文为double类型,完成后点击Next。

(6)点击“Check for Issues”按键,进行错误检查,检查无误后如下图。

(7)选择“Build type”,可以为C/C++源代码,本文为动态链接库(Dynamic Librery),选择完成后点击“Generate”按钮,完成编译。

(8)编译完成后,出现预览界面,点击Next,完成本次编译。

3 python调用addition.dll动态链接库

3.1 复制addition.dll动态链接库

将addtion.dll动态链接库复制到与toMatdll.py脚本同一文件夹,方面演示和调用。

3.2 创建toMatdll.py函数

toMatdll.py代码如下,使用ctypes库进行调用。

from ctypes import *
dll = CDLL(r"./addition.dll")
dll.addition.restype = c_double #设置函数输出
sum = dll.addition(c_double(1),c_double(2))
print(sum)

下面分别说明每一部分内容:

3.1.1 创建连接

dll = CDLL(r"./addition.dll")

3.1.2 设置输出格式

输出格式为double类型,若不设置输出格式,输出结果会出错。

dll.addition.restype = c_double #设置函数输出

3.1.3 传入计算参数

注意传入的每个参数都要给定参数类型,类型与编译时选择的参数类型一致,具体类型见下表。

sum = dll.addition(c_double(1),c_double(2))

ctypes tpye

3.1.4 调用计算结果

调用后的输出结果为3.0。

4 输出数值不对错误

由于没有设置输出数据类型,添加上输出类型设置语句即可。

5总结

本博客只是对python调用matlab编译的动态链接库的一次简单尝试,但其他matlab函数编译基本原理一致,具体能编译的函数见MathWorks

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值