在我的Matlab路径上有一个自定义zeros
功能。我想在变量中存储内置zeros
的句柄。我怎么能这样做?
考虑@(varargin)builtin('zeros',varargin{:})
,但由于字符串比较,这可能会减慢操作速度。
此外,我注意到可以将diag
称为@numel\diag
,但这似乎不适用于其他内置函数(特别是zeros
)
答案 0 :(得分:4)
建议#1
% At the beginning of your script:
rmpath('C:\the\folder\containing\the\custom\zeros');
builtInZeros = @zeros;
addpath('C:\the\folder\containing\the\custom\zeros');
% Calling the custom zeros later:
a = zeros(10, 20);
% Calling the built-in zeros:
b = builtInZeros(10, 20);
建议#2
将这三行放入startup file:
rmpath('C:\the\folder\containing\the\custom\zeros');
builtInZeros = @zeros;
addpath('C:\the\folder\containing\the\custom\zeros');
建议#3
重复使用内置函数的名称绝对是一个危险的想法。它破坏了脚本的可读性,使得维护起来更加困难。因此,如果您可以控制自定义zeros
函数,则将其重命名为其他内容。使用一个名称来描述自定义版本与内置版本的不同之处(例如,如果它更快,则称之为fastZeros
。)
答案 1 :(得分:2)
嗯,这并没有给你一个问题的确切答案,但它可以解决问题:
我认为这似乎是一个很好的解决方案:
matlabcentral: How to call a shadowed function
关于上一篇文章:
偶然发现了这个问题并找到了以下解决方案:For 例如,我有libsvm工具箱阴影的matlab svmtrain:
svmtrain -all
C:\项目\ Ichilov \其它\ MVPA \ LIBSVM-MAT-3.0-1 \ svmtrain.mexw64
C:\ Program Files \ MATLAB \ R2009b \ toolbox \ bioinfo \ biolearning \ svmtrain.m %Shadowed
但我可以使用str2func访问原始函数:
org_svmtrain = str2func([matlabroot'\ toolbox \ bioinfo \ biolearning \ svmtrain'])
然后简单地调用:
org_svmtrain(training,groupnames)