在我的 Matlab 路径上有一个自定义zeros
函数。我想将内置句柄存储zeros
在变量中。我怎样才能做到这一点?
想过@(varargin)builtin('zeros',varargin{:})
,但是由于字符串比较,这可能会减慢操作速度。
另外,我注意到可以引用diag
as @numel\diag
,但这似乎不适用于其他内置函数(zeros
特别是)。
在我的 Matlab 路径上有一个自定义zeros
函数。我想将内置句柄存储zeros
在变量中。我怎样才能做到这一点?
想过@(varargin)builtin('zeros',varargin{:})
,但是由于字符串比较,这可能会减慢操作速度。
另外,我注意到可以引用diag
as @numel\diag
,但这似乎不适用于其他内置函数(zeros
特别是)。
建议 #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
将这三行放入您的启动文件中:
rmpath('C:\the\folder\containing\the\custom\zeros');
builtInZeros = @zeros;
addpath('C:\the\folder\containing\the\custom\zeros');
建议#3
重用内置函数的名称绝对是一个危险的想法。它破坏了脚本的可读性,使它们更难维护。因此,如果您可以控制自定义zeros
函数,请将其重命名为其他名称。使用描述自定义版本与内置版本有何不同的名称(例如,fastZeros
如果它更快,则调用它)。
好吧,这并没有给你一个确切的答案,但它可以解决问题:
我认为这似乎是一个很好的解决方案:
在最后一篇文章中:
刚刚偶然发现了这个问题并找到了以下解决方案:例如,我有 matlab svmtrain 被 libsvm 工具箱遮蔽:
哪个 svmtrain -all
C:\Projects\Ichilov\Misc\MVPA\libsvm-mat-3.0-1\svmtrain.mexw64
C:\Program Files\MATLAB\R2009b\toolbox\bioinfo\biolearning\svmtrain.m % 阴影
但我可以使用 str2func 访问原始函数:
org_svmtrain = str2func([matlabroot '\toolbox\bioinfo\biolearning\svmtrain'])
然后简单地调用:
org_svmtrain(培训,组名)