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