前言:
当前朋友们对“python和matlab代码能转换吗”大约比较关注,朋友们都想要分析一些“python和matlab代码能转换吗”的相关知识。那么小编在网摘上搜集了一些有关“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 "matlabroot\extern\engines\python"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.engineeng = matlab.engine.start_matlab()y = eng.myLS(matlab.double([[1.],[2.]]),matlab.double([[3.],[4.]]))print y
从 MATLAB 函数返回多个输出参数
默认情况下matlab返回一个参数到python,如果返回大于1个参数,需要在调用函数中使用 nargout 参数指定输出参数的数量。
import matlab.engineeng = 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.engineeng = matlab.engine.start_matlab()eng.doc(nargout=0)
矩阵转换问题
python中经常使用numpy实现多维矩阵,但将ny矩阵转为matlab的double数组存在问题。
解决办法是用numpy.ndarray的tolist()方法。
data_list = data.tolist()