Python &引用__打电话给;Matlab中的等价类
是否可以在MATLAB中定义一个类方法,类似于Python中的“调用””方法 如何在MATLAB中实现以下Python类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):
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