嗨玩手游网

如何使用Python调用MATLAB函数

R2017b之前的版本支持py2.7-py3.5,R2017b以及之后可支持py3.6

安装python关于MATLAB的扩展包

切换目录至 ~MATLAB\R2018b\extern\engines\python,执行下面命令

其中~MATLAB为MATLAB的安装目录

#非默认目录下安装,并把安装信息存至D:\MatlabForPython\files.txtpython setup.py build --build-base=\"D:\MatlabForPython\" install --record D:\MatlabForPython\files.txt #默认目录下安装python setup.py install准备工作

matlab文件 getFromMat.m

function a = getFromMat(x)a=[1 2 3; 4 5 6]x

导入包,并启动MATLAB引擎

>>> import matlab.engine>>> eng=matlab.engine.start_matlab()python获取MATLAB的执行结果

需要将得到的值进行转化,才能得到array类型的数据

>>> mat=eng.getFromMat(1)a = 1 2 3 4 5 6x = int64 1>>> np.array(mat._data).reshape(mat.size[::-1]).Tarray([[1., 2., 3.], [4., 5., 6.]])将python数据传入MATLAB函数

>>> aa=np.arange(9).reshape(3,3)>>> bb=matlabt8(aa.tolist())>>> data=eng.triarea(bb)a = 1 2 3 4 5 6x = 3x3 int8 矩阵 0 1 2 3 4 5 6 7 8完整代码

import matlab.engineimport numpy as npeng=matlab.engine.start_matlab()#得到matlab执行结果,并转化为array数据mat=eng.getFromMat(1)pymat=np.array(mat._data).reshape(mat.size[::-1]).T#将array数据转化为matlabt,并传入matlab引擎aa=np.arange(9).reshape(3,3)bb=matlabt8(aa.tolist())data=eng.triarea(bb)#关闭matlab引擎eng.quit()

MATLAB怎么自定义函数?

众所周知,MATLAB分为脚本文件和函数文件。

它俩的区别是:脚本文件可以直接执行,而函数文件不能直接执行。

由此,有两种方法创建函数:

在单独的函数文件中创建函数

注意文件名称和函数名字要相同(例如:都为ffff)

创建名为ffff.m的函数文件:

function y=ffff(x)y=x+1在脚本文件usefunc.m中使用函数ffff(x):

y=ffff(8)

运行脚本文件,得到结果y=9

有图有真相:

函数文件ffff.m

脚本文件usefunc.m

脚本文件运行结果y=9

直接在脚本文件中创建函数

此时文件名称和函数名字不能相同!

创建脚本文件scriptfunc.m

y=fff(5)function y=fff(x) y=x+1end

该脚本中的函数名称为fff,函数体必须位于该文件的末尾。

运行结果为6

如图:

脚本文件scriptfunc.m

运行结果

帮助文档中的细节

在MATLAB的帮助文档中搜索function,获取更多信息:

只包含函数定义的函数文件中。文件的名称应与文件中其函数的名称一致。包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。脚本文件不能与文件中的函数具有相同的名称。R2016b 或更高版本的脚本中支持函数。

文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用 end 关键字来表示文件中每个函数的末尾。以下情况下需要 end 关键字:

文件中有任意函数包含嵌套函数。该函数是函数文件中的局部函数,并且文件中有局部函数使用 end 关键字。该函数是脚本文件内的局部函数。

MATLAB快速入门官方说明——6.调用函数

调用函数

Try This Example

MATLAB® 提供了大量执行计算任务的函数。在其他编程语言中,函数等同于子例程或方法。

要调用函数,例如 max,请将其输入参数括在圆括号中:

A = [1 3 5];max(A)

ans = 5

如果存在多个输入参数,请使用逗号加以分隔:

B = [10 6 4];max(A,B)

ans =10 6 5

通过将函数赋值给变量,返回该函数的输出:

maxA = max(A)

maxA = 5

如果存在多个输出参数,请将其括在方括号中:

[maxA,location] = max(A)

maxA = 5

location = 3

将任何字符输入括在单引号中:

disp('hello world')

hello world

要调用不需要任何输入且不会返回任何输出的函数,请只键入函数名称:

clc

clc 函数清除命令行窗口。

更多资讯
游戏推荐
更多+