本例演示如何从MATLAB句柄类创建一个对象并在Python中调用它的方法。在名为MyLine.m的文件中创建一个MATLAB句柄类,将该文件添加到Python路径。
code.matlab
classdef MyLine < handle
properties(SetAccess=private)
StartX=0;
StartY=0;
EndX=0;
EndY=0;
end
methods
function LN=MyLine(x0,y0,x1,y1)
LN.StartX=x0;
LN.StartY=y0;
LN.EndX=x1;
LN.EndY=y1;
end
function L=len(LN)
L=sqrt((LN.EndX-LN.StartX)^2+(LN.EndY-LN.StartY)^2);
end
function setStartX(LN,x0)
LN.StartX=x0;
end
function setStartY(LN,y0)
LN.StartY=y0;
end
function setEndX(LN,x1)
LN.EndX=x1;
end
function setEndY(LN,y1)
LN.EndY=y1;
end
end
end
启动Python,创建一个MyLine句柄对象并用引擎调用它的len方法,将句柄对象作为第一个位置变量进行传递。在Python IDLE Shell窗口输入下面的语句:
code.python
>>> import matlab.engine
>>> eng=matlab.engine.start_matlab()
>>> ln=eng.MyLine(1.0,1.0,3.0,3.0)
>>> a=eng.len(ln)
>>> print(a)
2.8284271247461903
用setEndX和setEndY方法改变直线段终点的位置。如果句柄类为属性定义了get和set方法,可以在不使用MATALB工作区的情况下获取属性。在Python IDLE Shell窗口输入下面的语句:
code.python
>>> eng.setEndX(ln,5.0,nargout=0)
>>> eng.setEndY(ln,5.0,nargout=0)
>>> a=eng.len(ln)
>>> print(a)
5.656854249492381