覆盖内建函数-标准偏差



我想有一个标准偏差的std.m文件。它是在数据有趣的工具箱,但是,错误地,我改变了代码和std命令不再工作。如何执行原std(标准差)命令?

去掉所有注释,函数std.m实际上非常简单:

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

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


  • 设置内置函数为Read-Only

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

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


  • 重载

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

这篇文章解释了如何重载用户函数。

Matlab不建议直接重载内置函数(而是叫它另一个名字,比如mySTD.m),但如果你坚持它是完全可行的,仍然是一个比修改内置函数更好的选择…至少原来的功能还是完整的

最新更新