覆盖内置函数 - 标准偏差

Overwrote built in function - Standard deviation

我想要一个 std.m 标准差文件。它在 data fun 工具箱中,但我错误地更改了代码,std 命令不再起作用。我怎样才能 运行 原来的 std (标准偏差)命令?

去掉所有注释,函数std.m其实极其简单:

function y = std(varargin)
    y = sqrt(var(varargin{:}));

这是standard deviation的定义:Variance的平方根。


  • 将内置函数设置为只读

现在不要破坏 var.m 文件,因为它更复杂,我想知道在此处显示列表是否会有版权问题。

为避免破坏内置文件的问题,建议将所有 Matlab 工具箱文件设置为 只读。我记得旧的 Matlab 安装程序提供了在安装时执行此操作的选项。我不知道安装程序是否仍然提供该选项,但如果没有,则手动操作非常容易(在 Windows 上,只需 select 您的文件夹,右键单击 Properties,勾选 只读 并接受将 属性 传播到所有子文件夹和文件)。


  • 超载

一旦完成,您的内置文件就安全了。您仍然可以通过 重载 来修改内置函数的默认行为。这包括编写一个具有相同名称的函数并安排在默认函数之前调用它(您的重载函数成为默认函数)。

article 解释了如何重载用户函数。

Matlab 不建议直接重载内置函数(而是将其称为另一个名称,例如 mySTD.m),但如果您坚持这样做是完全可行的,并且仍然是比 修改内置函数...至少原函数在某处还完好无损.