Python调用Matlab

Python调用Matlab

Python的应用越来越广泛,在深度学习,机器学习,数据挖掘等方面有很大的优势,并且python是开源的有强大的第三方库,这是python的最大优势。但是MATLAB在科学计算方面优化的非常极致,特别是SIMULINK的模块化编程方式非常方便,在实际的应用中经常会需要SIMULINK和python之间频繁的数据交换和调用,这里简单介绍一下MATLAB与python之间的混合编程。本文档所有操作都是在Window10环境下实现的。

一、python安装matlab
找到Matlab安装根目录,比如D:\matlab,然后进入D:\matlab\extern\engines\python目录中,然后打开然后用管理员权限打开cmd,执行cd D:\matlab\extern\engines\python,然后在执行python setup.py install
二、使用方法
1.1、调用matlab()(默认是同步的)
默认情况下,该引擎同步调用MATLAB函数。控件只有在MATLAB函数完成时才返回Python。但是该引擎也可以异步调用函数。控件在MATLAB仍在执行该函数时立即返回Python。引擎将结果存储在Python变量中,该变量可以在函数完成后进行检查。
Python调用Matlab
1.2、异步调用matlab
(与同步调用不同于多了一行eng = future.result的代码)
Python调用Matlab
2、调用自定义函数
调用脚本和自定义函数的过程也几乎一样,也是从变量engine中去调用。值得注意的是,需要保证你的函数或脚本就在当前的工作路径下,否则engine会找不到文件而报错。
Python调用Matlab
3、变量兼容性问题
使用时有时会遇到很多变量类型不正确这样的提示,因为MATLAB函数对于输入数据的类型有着比较严格的要求,比如log2对于int8类型输入就会报错。double类型是MATLAB里面用得最多的数据型,所以一般可以将python的数据转成MATLAB兼容的double类型来解决问题。举个例子,Python的list类型变量只需加上matlab.double就可以完成转换。
Python调用Matlab
4、从 MATLAB 函数返回多个输出参数
调用gcd函数,它会返回3个参数。(默认返回一个,不返回值为0)
Python调用Matlab

参考资料:
1、https://www.cnblogs.com/Key-Ky/p/9012814.html
2、https://ww2.mathworks.cn/help/matlab/apiref/matlab.engine.start_matlab.html#bu4yhqc
https://ww2.mathworks.cn/help/matlab/apiref/matlab.engine.futureresult-class.html
https://ww2.mathworks.cn/help/matlab/apiref/matlab.engine.matlabengine-class.html#bukig7r-6
3、https://blog.csdn.net/qq_27262673/article/details/79635924