如何在执行MATLAB内置函数之前显示消息

时间:2014-10-04 20:08:11

标签: matlab

由于某些原因,我需要在每次执行save函数时显示一条消息。我的程序的所有代码都已编写完成。这就是我想要覆盖save MATLAB内置函数的原因。

这是功能:

function save(varargin)
    disp(['The file has been saved to ' varargin{1}])
    builtin('save',varargin{:})
end

但是,它不起作用,MATLAB返回Error using save

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我假设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