2

在我的 Matlab 路径上有一个自定义zeros函数。我想将内置句柄存储zeros在变量中。我怎样才能做到这一点?

想过@(varargin)builtin('zeros',varargin{:}),但是由于字符串比较,这可能会减慢操作速度。

另外,我注意到可以引用diagas @numel\diag,但这似乎不适用于其他内置函数(zeros特别是)。

4

2 回答 2

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

将这三行放入您的启动文件中

rmpath('C:\the\folder\containing\the\custom\zeros');
builtInZeros = @zeros;
addpath('C:\the\folder\containing\the\custom\zeros');

建议#3

重用内置函数的名称绝对是一个危险的想法。它破坏了脚本的可读性,使它们更难维护。因此,如果您可以控制自定义zeros函数,请将其重命名为其他名称。使用描述自定义版本与内置版本有何不同的名称(例如,fastZeros如果它更快,则调用它)。

于 2013-08-13T10:17:33.323 回答
2

好吧,这并没有给你一个确切的答案,但它可以解决问题:

我认为这似乎是一个很好的解决方案:

matlabcentral:如何调用阴影函数

在最后一篇文章中:

刚刚偶然发现了这个问题并找到了以下解决方案:例如,我有 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(培训,组名)

于 2013-08-13T10:16:59.167 回答