Function 如何调用倍频程中的阴影函数?

Function 如何调用倍频程中的阴影函数?,function,octave,symbolic-math,Function,Octave,Symbolic Math,我想修改vpa函数的行为。为此,我定义了自己的名为vpa的函数,该函数调用原始的vpa函数,然后执行更多操作 要从修改后的函数中调用原始函数,我使用 y = builtin('vpa', varargin{:}); 其中,varargin是一个函数输入的单元格数组,和通常一样 问题在于,上述操作产生的结果与调用原始的vpa函数不同 ,在倍频程4.2.2上运行: >> vpa([4 5], 20) ans = (sym) [4.0 5.0] (1x2 matrix) >&g

我想修改
vpa
函数的行为。为此,我定义了自己的名为
vpa
的函数,该函数调用原始的
vpa
函数,然后执行更多操作

要从修改后的函数中调用原始函数,我使用

y = builtin('vpa', varargin{:});
其中,
varargin
是一个函数输入的单元格数组,和通常一样

问题在于,上述操作产生的结果与调用原始的
vpa
函数不同

,在倍频程4.2.2上运行:

>> vpa([4 5], 20)
ans = (sym) [4.0  5.0]  (1x2 matrix)
>> builtin('vpa',[4 5], 20)
ans = (sym) 4.0000000000000000000
使用符号参数的
disp

>> x = sym(8);
>> disp(x)
  8
>> builtin('disp', x)
 <class sym>
>x=sym(8);
>>显示(x)
8.
>>内置('disp',x)
为什么输出不同?
builtin
真的调用了原始函数吗?如果是,如何调用原始函数



.

@AndrasDeak我无法实现这一点,甚至在拦截功能之前将
old_vpa
定义为
global
。我得到一个最大递归深度错误。似乎
old_vpa
指向的是修改后的
vpa
,而不是原来的。也许我犯了一些错误;我认为这种方法应该有效。无论如何,我更喜欢只包含修改后函数中的代码的解决方案,好吧,我开始了解其中的微妙之处。这不是关于内置/核心,而是关于过载解决方案<代码>内置将始终调用函数的非重载(非类特定)版本。您可以从重载函数中使用它来调用基函数。您正在尝试调用阴影重载函数。不确定这是否可行。您可以运行脚本,但这对函数不起作用。我认为做你想做的事是不可能的。我希望有人能证明我错了!:)不确定这是否有帮助,但是对于'disp'的情况,您可以通过执行
内置('@sym/disp',x)
来获得正确的结果。不幸的是,这对
vpa
没有同样的帮助,因为vpa与disp的方式不同,它不是现有内置的重载。@tasospapstyleno很高兴了解
内置('@sym/disp',x)
,谢谢!使用
@(varargin)vpa(varargin{:})
似乎