如何在执行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
将重复格式字符串,直到所有匹配它的输入都被使用。