在Python中使用MATLAB句柄类

本例演示如何从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