我创建了一个类,为了所有实际目的(虽然它比看起来更复杂)可以被认为是一个matlab实数。
在课堂上,我可以重载大量的matlab运算符,如plus,mpower等。
这可能是不可能的,但我将如何去重载我的课程的任何功能?
换句话说,假设我有一个任意函数f,它取实数并输出实数,并且说X是我的类的一个实例。我希望f(X)能够被matlab正确解释(当然,我有一种自然的方式来接受一个函数指针并将其应用到我的类中,我将在代码中进行这种操作)。
我可以看到他们的问题:matlab可能无法看到函数f将实数作为输入。但我会留给用户不要搞乱他们的函数调用。
我有什么意义吗?
我不认为这是可能的,但如果是的话,这将是非常棒的。
ps:我知道我可以通过创建一个以funciton句柄作为输入的方法来绕过它,但它不太漂亮。
谢谢!
编辑:
对不起,我意识到这有点令人困惑。我会更清楚。假设我有一个表示随机,实际变量的类(为简单起见,表示离散集)。我的课程包含随机变量的概率分布及其可能的值。
对于任意两个随机变量X,Y,总和X + Y是明确定义的,所以如果我有代表随机变量的实例X和Y,那么如果Z = X + Y定义了一个等于总和的新随机变量的X和Y,具有适当的设置和分布。我已经做到了,通过重载加号运算符。这真好。
假设我有一个任意函数f,比如说“cos”。那么,对于任何随机变量X,cos(X)也是一个随机变量,如果我可以只写Z = cos(X),它会自动创建我的类的实例,计算适当的域并且概率分布。
问题是我希望这个自动操作发生在任何函数f - 我不想手动重载每个常用函数(特别是因为我想让这个函数与用户定义的函数f一起工作)。
再举一个例子:
我创建了一个随机变量X,域为[-2,-1,0,1,2],概率为[1 / 5,1 / 5,1 / 5,1 / 5,
1/5]
我创建了一个(奇怪的)函数f
如果x = -2或2,则f(x)= x
否则,f(x)= x ^ 2
然后,通过设置Z = f(X),我希望matlab自动创建一个带有域{-2,0,1,2}的随机变量Z
和概率[1/5,1 / 5,2 / 5,1 / 5]
数学上,我知道如何做到这一点。但是我需要拦截并重载我的课程的任何函数调用。
这有任何意义吗?
ps:我没有接受过面向对象编程方面的正式培训,所以我有时可能会使用错误的词作为概念。
再次感谢您的帮助!