无线智联-程序篇:让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基础设施》

OFDM通信系统的MATLAB仿真

无线传感器网络数据压缩与融合及安全机制的matlab仿真

开发运维手牵手「Linux篇」awk命令用法

Dapr牵手.NET学习笔记:用docker-compose部署服务

开发运维手牵手「Linux篇」开发同学可能用到的Linux运维命令集锦