【问题标题】:Access function in MatlabMatlab中的访问函数
【发布时间】:2014-07-25 16:35:31
【问题描述】:

我希望能够使用我可以看到代码的函数,这些函数用于内置 matlab 函数但我不能直接调用。

其中一个函数是checkdata。我可以看到这个函数的代码。它用在像gmdistribution.fit这样的内置matlab函数中,但我不能直接调用它

X = zeros(5,5);
checkdata(X)

如何在我自己的函数中调用这些函数?

【问题讨论】:

  • 它是一个私有函数,你可以通过查看调用函数的m文件的路径来看到它的代码,你会在其中找到一个名为private的文件夹。

标签: matlab function


【解决方案1】:

你不能调用函数checkdata,因为它是一个私有函数。要将函数设为文件专用,您必须将函数文件存储在名为private 的文件夹中。例如考虑以下文件夹结构:

-Folder A
   - m1.m
   - m2.m
   Folder private
      - privatefunction1.m
      - privatefunction2.m
Folder B
   - m3.m

m1.m 和 m2.m 可以调用 privatefunction1.m 和 privatefunction2.m。 m3.m 不能调用这两个私有函数中的任何一个。更多详情请至Matlab help about private functions

但是,如果您想使用checkdata,您可以找到 checkdata.m 并将其复制到其他文件夹。

【讨论】:

  • 请记住,工具箱功能是受版权保护的材料。
  • 你是对的。但是我不认为私有功能的版权与其他功能的版权不同,是吗?所以无论如何你都必须注意这一点。
【解决方案2】:

您可以在MATLABFOLDER\toolbox\stats\stats\@gmdistribution\private 中找到具有此功能的m 文件。这是 matlabs 将函数设为私有的方式(see here)。 Matlab 不允许您将诸如此类的私有文件夹添加到您的路径中。 简单的解决方法是将您自己的具有类似功能的 m 文件放在您的路径中,这并不难,因为您可以查看代码及其作用。这样做时,我建议避免命名冲突。 matlab 处理那些like this

【讨论】:

  • 是的,但必须将现有功能复制到新文件以使其工作对我来说是无意义的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多