我们有一个matlab函数nanstd.m的遗留定义,它在很多函数中都被调用。
遗留版本的定义如下:
function y = nanstd(x, dim);上述定义存储在本地服务器驱动器"H\Util\Functions“中。
最新版本的matlab有一个不同的定义,即:
function y = nanstd(fts, varargin)上述翻译为:
Y = nanstd(X,flag,dim)以上内容存储在"C\Program \Matlab“中。
我们需要这两个版本都可用。我是否有可能编写这样的代码:如果有2个参数输入,请在“H\Util\Files”处使用nanstd.m,如果有3个输入,则在"C\Program \Matlab“处使用nanstd.m。
谢谢
发布于 2013-10-04 14:49:17
由于您的遗留定义应该在路径上的内置版本之前,所以您可以简单地将以下内容添加到您的自定义nanstd中,这样它的行为如下:
function y = nanstd(x,varargin)
if nargin > 2
wd = cd(fullfile(matlabroot,'toolbox','stats','stats'));
y = nanstd(x,varargin{:});
cd(wd)
return
elseif nargin == 2
flag = varargin{1};
end
%// ... continue custom nanstd function根据this discussion on MatlabCentral,运行隐藏函数的唯一方法是切换到它的目录。令人惊讶的是,路径更倾向于当前目录到当前函数--这让我感到惊讶--但这对这种情况是有益的。这允许您简单地修改您的自定义遗留的nanstd函数,以启动到内置定义。
编辑:您可能需要将对stats nanstd的调用包装为一个try/catch,以便您的目录总是被恢复,即使发生错误。
https://stackoverflow.com/questions/19183734
复制相似问题