如何在执行MATLAB内置函数之前显示消息
由于某些原因,我需要在每次执行如何在执行MATLAB内置函数之前显示消息,matlab,Matlab,由于某些原因,我需要在每次执行save功能时显示一条消息。我的程序的所有代码都已经编写好了。这就是为什么我想覆盖saveMATLAB内置函数 这就是功能: function save(varargin) disp(['The file has been saved to ' varargin{1}]) builtin('save',varargin{:}) end 但是,它不起作用,MATLAB使用save返回错误 如何解决这个问题?我假设varargin是字符串的单元格数组,
save
功能时显示一条消息。我的程序的所有代码都已经编写好了。这就是为什么我想覆盖save
MATLAB内置函数
这就是功能:
function save(varargin)
disp(['The file has been saved to ' varargin{1}])
builtin('save',varargin{:})
end
但是,它不起作用,MATLAB使用save返回错误
如何解决这个问题?我假设varargin
是字符串的单元格数组,就像内置函数save
中那样
问题是您的save
版本不“知道”调用方函数的变量。您可以使用evalin
函数在调用方函数的上下文中计算save
。
为此,应将varargin
转换为字符串。一种方法是
function save(varargin)
disp(['The file has been saved to ' varargin{1}])
cmd = ['builtin(''save'',' sprintf(repmat('''%s'',',1,nargin),varargin{:}) ];
cmd(end) = ')';
evalin('caller',cmd)
end
repmat
在这里是多余的-sprintf(''%s',',varargin{:})
将获得相同的结果,因为sprintf
将重复格式字符串,直到所有匹配它的输入都被使用。