无线智联-程序篇:让python与matlab牵手
Posted 立志做码农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无线智联-程序篇:让python与matlab牵手相关的知识,希望对你有一定的参考价值。
python和matlab本来是青梅竹马的好基友,奈何相爱相杀,经常放在一起做对比,就好比经常听到的,“你看看隔壁xx家的孩子”,其实每个孩子都有每个孩子的优点,如果能发挥每个孩子的优点,岂不是更好。这不,python和matlab这对好基友也牵手了。下面详细说说。
我们让python来娶matlab,在python的程序中调用matlab。要在 Python? 会话内启动 MATLAB? 引擎,必须先安装 Python 包形式的引擎 API。MATLAB 提供了标准的 Python setup.py 文件,用于通过 distutils 模块编译和安装引擎。可以使用相同的 setup.py 命令在 Windows?、Mac 或 Linux? 系统上编译和安装引擎,所以不同系统下命令是兼容的。
在安装之前,要确认您的 Python 和 MATLAB 配置:
1.系统具有受支持的 Python 版本和 MATLAB R2014b 或更新版本。要检查系统上是否已安装 Python,在操作系统提示符下运行 Python。
2.包含 Python 解释器的文件夹添加到您的路径(如果尚未在该路径中)。
3. 找到 MATLAB 文件夹的路径。启动 MATLAB,并在命令行窗口中键入 matlabroot。复制 matlabroot 所返回的路径。
然后运行setup.py:
在 Windows 系统中 -
cd "matlabrootexternenginespython"
python setup.py install
在 Mac 或 Linux 系统中 -
cd "matlabroot/extern/engines/python"
python setup.py install
在python中调用matlab函数
先在matlab中写一个简单的测试函数:
function x=myLS(A,B)
x = A/B;
end
?
然后在python中进行调用:
import matlab.engine
eng = matlab.engine.start_matlab()
y = eng.myLS(matlab.double([[1.],[2.]]),matlab.double([[3.],[4.]]))
print y
从 MATLAB 函数返回多个输出参数
默认情况下matlab返回一个参数到python,如果返回大于1个参数,需要在调用函数中使用 nargout 参数指定输出参数的数量。
import matlab.engine
eng = matlab.engine.start_matlab()
t = eng.gcd(100.0,80.0,nargout=3)
print(t)
(20.0, 1.0, -1.0)
不返回参数
如果没有返回参数,,则将 nargout 设为 0即可:
import matlab.engine
eng = matlab.engine.start_matlab()
eng.doc(nargout=0)
矩阵转换问题
python中经常使用numpy实现多维矩阵,但将ny矩阵转为matlab的double数组存在问题。
解决办法是用numpy.ndarray的tolist()方法。
data_list = data.tolist()
以上是关于无线智联-程序篇:让python与matlab牵手的主要内容,如果未能解决你的问题,请参考以下文章
京东布局IPFS:2020年京东智联云事业部无线宝业务张晓东《基于京东云无线宝智能终端及其价值共享理念,构建IPFS基础设施》