首页 > 编程语言 >python调用matlab

python调用matlab

时间:2023-12-19 09:44:41浏览次数:44  
标签:engine 调用 eng python Python matlab MATLAB

官网链接:

https://ww2.mathworks.cn/help/matlab/matlab_external/call-user-script-and-function-from-python.html?lang=en

https://ww2.mathworks.cn/help/matlab/matlab_external/install-the-matlab-engine-for-python.html

安装用于 Python 的 MATLAB 引擎 API

要在 Python® 会话内启动 MATLAB® 引擎,必须先安装 Python 包形式的引擎 API。MATLAB 提供了标准的 Python setup.py 文件,用于通过 distutils 模块编译和安装引擎。您可以使用相同的 setup.py 命令在 Windows®、Mac 或 Linux® 系统上编译和安装引擎。

在安装之前,确认您的 Python 和 MATLAB 配置。

  • 您的系统具有受支持的 Python 版本和 MATLAB R2014b 或更新版本。要检查您的系统上是否已安装 Python,请在操作系统提示符下运行 Python。

  • 将包含 Python 解释器的文件夹添加到您的路径(如果尚未在该路径中)。

  • 找到 MATLAB 文件夹的路径。启动 MATLAB,并在命令行窗口中键入 matlabroot。复制 matlabroot 所返回的路径。

要安装引擎 API,请在操作系统提示符下执行以下命令,其中 matlabroot 是 MATLAB 文件夹的路径。您可能需要管理员权限才能执行这些命令。或者,使用在非默认位置安装用于 Python 的 MATLAB 引擎 API 中所述的非默认选项之一。

  • 在 Windows 系统中 -

    cd "matlabroot\extern\engines\python"
    python setup.py install
    
  • 在 Mac 或 Linux 系统中 -

    cd "matlabroot/extern/engines/python"
    python setup.py install

从 MATLAB 函数返回输出参数

您可以直接调用任何 MATLAB® 函数并将结果返回到 Python®。例如,要确定某个数是否为质数,请使用该引擎调用 isprime 函数。

import matlab.engine
eng = matlab.engine.start_matlab()
tf = eng.isprime(37)
print(tf)
True

从 MATLAB 函数返回多个输出参数

当使用引擎调用函数时,默认情况下该引擎会返回单个输出参数。如果您知道函数可能返回多个参数,请使用 nargout 参数指定输出参数的数量。

要确定两个数的最大公分母,请使用 gcd 函数。设置 nargout 以从 gcd 返回三个输出参数。

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)

不从 MATLAB 函数返回任何输出参数

有些 MATLAB 函数不会返回任何输出参数。如果函数不返回任何参数,则将 nargout 设为 0。

通过 Python 打开 MATLAB 帮助浏览器。

import matlab.engine
eng = matlab.engine.start_matlab()
eng.doc(nargout=0)

MATLAB doc 函数将打开浏览器,但不会返回输出参数。如果您没有指定 nargout=0,引擎将报告错误。

停止执行函数

要停止执行 MATLAB 函数,请按 Ctrl+C。控制权将返回给 Python。

 

Call MATLAB Functions Asynchronously from Python

This example shows how to call the MATLAB® sqrt function asynchronously from Python® and retrieve the square root later.

The engine calls MATLAB functions synchronously by default. Control returns to Python only when the MATLAB function finishes. But the engine also can call functions asynchronously. Control immediately returns to Python while MATLAB is still executing the function. The engine stores the result in a Python variable that can be inspected after the function finishes.

Use the async argument to call a MATLAB function asynchronously.

import matlab.engine
eng = matlab.engine.start_matlab()
future = eng.sqrt(4.0,async=True)
ret = future.result()
print(ret)
2.0

Use the done method to check if an asynchronous call finished.

tf = future.done()
print(tf)
True

To stop execution of the function before it finishes, call future.cancel().

标签:engine,调用,eng,python,Python,matlab,MATLAB
From: https://www.cnblogs.com/liylllove/p/17912911.html

相关文章

  • 用MATLAB实现遗传算法程序
    用MATLAB实现遗传算法程序/B2F.m , 658用MATLAB实现遗传算法程序/changes.m , 959用MATLAB实现遗传算法程序/cross.m , 1155用MATLAB实现遗传算法程序/de2bi.m , 1048用MATLAB实现遗传算法程序/F2B.m , 540用MATLAB实现遗传算法程序/f553.m , 538用MATLAB实现遗传算法......
  • Python给exe添加以管理员运行的属性
    需求有些应用每次启动都需要用管理员权限运行,比如Python注入dll时,编辑器或cmd就需要以管理员权限运行,不然注入就会失败。这篇文章用编程怎么修改配置实现打开某个软件都是使用管理员运行,就不用每次都右键点击以管理员身份运行此程序。主要是给小白配置,防止他忘了以管理员权限运......
  • 期末复习-基于python的数据整理
    一、pandas数据合并pd.concat()append()pd.merge()1.1pd.concat()函数pandas的pd.concat函数和numpy的np.concatenate函数类似1)简单的合并defmake_df(indexs,columns):data=[[str(j)+str(i)forjincolumns]foriinindexs]df=pd.DataFrame(data=data......
  • 基于深度学习网络的疲劳驾驶检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述3.1疲劳检测理论概述      疲劳检测的原理是根据人体疲劳状态下的特征检测,和正常状态下的特征检测做对比。在做疲劳检测之前,首先需要分析人体在疲劳状态下与正常状态下的特征有哪些不......
  • 多尺度retinex图像去雾算法matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述      多尺度Retinex(MSR)图像去雾算法是一种基于Retinex理论的去雾算法。该算法通过在大、中、小三个尺度上计算图像的反射分量,并对其进行加权平均,从而消除雾气对图像的影响,提高图像的可视度......
  • Python + AI:完美抠图,更换背景
    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/7BdEjWTF9S0kGMgWnudSNA翻看家里的老照片,发现一只小dog,很趣致吧,这眼神汪汪地~(背景是在厨房)。有时候就想把某些照片里的人物或者主角抠出来,然后贴到喜欢的背景图里,比如你想......
  • PyCharm中New Directory 和 New Python Package的区别
    如题,这是一个很简单也很基础的问题,先看不同操作的结果有什么不同结果1:项目下出现了一个空“文件夹” 结果2:项目下多了一个“PythonPackage”,该package下包含了一个“__init__.py”文件,该py文件是空的如果把该py文件删掉后,package也就变成了directory  所以什么是__in......
  • Python 使用 platform 判断检测操作系统的方法
    ​ 在Python中,可以使用platform模块来获取操作系统的信息。其中,platform.system()方法可以获取操作系统的名称。详细文档:Python使用platform判断检测操作系统的方法-CJavaPy使用platform.system()方法判断操作系统以下是一个使用platform.system()方法判断操作......
  • Python NumPy 图像处理
    ​ 1、读取图像需要使用图像处理库来读取图像文件,如Pillow,并将其转换为NumPy数组。示例代码:PythonNumPy图像处理-CJavaPy2、保存图像使用NumPy处理后的图像可以再次转换为Pillow图像 示例代码:PythonNumPy图像处理-CJavaPy3、转换为灰度图可以通过将RGB值转换为......
  • Python:设计模式
    一、设计模式与面向对象1.1设计模式  软件设计阶段针对反复出现的问题提出的统一解决方案。每类问题的解决方案都被系统的命名为XX设计模式。1.2面向对象  按照一件事的组成元素分别制作进行组装。这些元素分为属性与接口。1.2.1三大特性  封装:将对象封装为类,将对......