Python &引用__打电话给;Matlab中的等价类

Python &引用__打电话给;Matlab中的等价类,python,matlab,class,object,call,Python,Matlab,Class,Object,Call,是否可以在MATLAB中定义一个类方法,类似于Python中的“调用””方法 如何在MATLAB中实现以下Python类 class Basic(object): def __init__(self, basic): self.basic = basic def __call__(self, x, y): return (numpy.sin(y) *numpy.cos(x)) def _calc(self, y, z):

是否可以在MATLAB中定义一个类方法,类似于Python中的“调用””方法

如何在MATLAB中实现以下Python类

class Basic(object):

    def __init__(self, basic):
        self.basic = basic

    def __call__(self, x, y):
        return (numpy.sin(y) *numpy.cos(x))

    def _calc(self, y, z):
        x = numpy.linspace(0, numpy.pi/2, 90)
        basic = self(x, y)
        return x[tuple(basic< b).index(False)]
基本类(对象):
定义初始化(自,基本):
self.basic=basic
定义调用(self,x,y):
报税表(整数倍罪恶(y)*整数倍罪恶(x))
定义计算(自、y、z):
x=numpy.linspace(0,numpy.pi/2,90)
基本=自身(x,y)
返回x[元组(基本
要在MATLAB中创建类对象,也就是说,需要修改该方法。这是在对对象
A
使用下标索引操作(如
A(i)
A{i}
A.i
时调用的方法。由于调用函数和索引对象都使用MATLAB中的
()
,因此必须修改此方法以模拟可调用行为。具体地说,您可能希望定义
()
索引以显示a的可调用行为,但显示非标量对象的法向量/矩阵索引

下面是一个示例(用于定义
subsref
方法),它将其属性提升到可调用行为的幂:

classdef可调用
性质
道具
结束
方法
%建造师
函数obj=可调用(val)
如果nargin>0
对象属性=值;
结束
结束
%Subsref方法,修改为使标量对象可调用
函数varargout=subsref(obj,s)
如果strcmp(s(1).键入“()”)
如果(numel(obj)==1)
%“\uuuuu调用\uuuuu”等效:将存储值提高到输入的幂次方
varargout={obj.Prop.^s(1).subs{1}};
其他的
%对向量/矩阵使用内置下标引用
varargout={builtin('subsref',obj,s)};
结束
其他的
错误('不是有效的索引表达式');
结束
结束
结束
结束
下面是一些用法示例:

>C=Callable(2)%n初始化标量可调用对象
C=
可使用属性调用:
道具:2
>>val=C(3)%Invoke可调用行为
瓦尔=
8         % 2^3
>>Cvec=[可调用(1)可调用(2)可调用(3)]%初始化可调用向量
Cvec=
具有以下属性的1×3可调用数组:
道具
>>C=Cvec(3)%Index向量,返回标量对象
C=
可使用属性调用:
道具:3
>>val=C(4)%Invoke可调用行为
瓦尔=
81         % 3^4