我试图通过调用 DataMatrix() 函数来创建一个 DataMatrix 变量。但该功能不存在。如果我输入这个:
>> DataMatrix
我收到此错误消息:
Undefined function or variable 'DataMatrix'.
我确实安装了 Bioinformatics Toolbox,我的版本是 Mac 上的 2016b
有任何想法吗?
我试图通过调用 DataMatrix() 函数来创建一个 DataMatrix 变量。但该功能不存在。如果我输入这个:
>> DataMatrix
我收到此错误消息:
Undefined function or variable 'DataMatrix'.
我确实安装了 Bioinformatics Toolbox,我的版本是 Mac 上的 2016b
有任何想法吗?
正如评论中提到的@Andras,导入和使用此类的过程已经在该类的文档中提到(尽管如果您错过了它可能会被原谅,因为它不在处理语法的页面顶部) .
tl;dr 版本是您应该访问类构造函数,例如:
D = bioma.data.DataMatrix(...);
或者,先从包/命名空间导入类,然后直接使用,即:
import bioma.data.DataMatrix;
D = DataMatrix(...);
解释
首先需要此步骤的原因是因为此类包含在“包”(也称为“命名空间”)中。阅读 matlab 文档中名为“包创建命名空间”的部分,以了解更多这意味着什么。
但是,原则上归结为这样一个事实,如果您有一个名称带有+
前缀的文件夹,那么它充当其中包含的函数的命名空间。
因此,如果您+MyPackage
的路径上有一个名为的文件夹,并且其中包含一个名为 m-file 的函数myfunction.m
(但它不在您的路径中),那么您可以在 matlab 终端中通过键入来访问此函数MyPackage.myfunction()
。
或者,您可以import MyPackage.myfunction
从该包/命名空间中myfunction
直接使用。
所以,回到DataMatrix
,你会看到,如果你搜索类定义在你的 matlab 文件夹中的位置,你会在这里找到它:
./toolbox/bioinfo/microarray/+bioma/+data/@DataMatrix/DataMatrix.m
并且大概./toolbox/bioinfo/microarray
已经在您的道路上。
即bioma
包/命名空间在你的路径中,你可以访问data
它下面的包/命名空间,然后是DataMatrix
通过做的类定义bioma.data.DataMatrix
。
PS:另外,文件夹名称前的“@”前缀表示一个类文件夹,包含构造函数和类方法。如果此“@folder”在您的路径中(或导入等),那么这意味着您可以访问底层构造函数。这是matlab 旧的面向对象风格classdef
的残余,在引入关键字之前。如果您有兴趣,可以在此处阅读有关类目录的更多信息。