如何使用同名的新函数包装已存在的函数

sla*_*ton 6 matlab overriding wrapper built-in

是否可以围绕与原始函数具有完全相同名称的函数创建包装器?

这在用户想要在输入变量传递到内置函数之前对输入变量进行一些额外检查的情况下非常有用.如何在显示非常大的数组时挂起MATLAB IDE?

jme*_*etz 11

实际上,除了slayton的答案,你不需要使用openvar.如果您定义一个与matlab函数同名的函数,它将影响该函数(即调用该函数).

为了避免递归调用自己的函数,可以使用包装器中的原始函数调用builtin.

例如

outputs = builtin(funcname, inputs..);
Run Code Online (Sandbox Code Playgroud)

简单的例子,命名rand.m并在matlab路径中:

function out = main(varargin)
disp('Test wrapping rand... calling rand now...');
out = builtin('rand', varargin{:});
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于找到的函数builtin.对于那些没有的人,slayton的方法可能是必要的.