【问题标题】:Overwrote built in function - Standard deviation覆盖内置函数 - 标准偏差
【发布时间】:2015-08-05 12:42:54
【问题描述】:

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

【问题讨论】:

  • function y = std(varargin) ; y = sqrt(var(varargin{:})); 这是std.m函数的内容。修复它,然后立即将所有 Matlab 内置文件设置为 只读
  • 嗨,Hoki,感谢您的帮助。当然,我会将我的内置文件更改为只读:D
  • @Hoki 作为答案发帖?

标签: matlab standard-deviation


【解决方案1】:

把所有的cmets都拿出来,std.m这个函数其实极其简单:

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

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


  • 将内置函数设置为只读

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

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


  • 重载

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

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

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

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 2013-04-08
    • 2015-03-29
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多