Matlab向量运算myVector(';:';)(';:';)的作用是什么?

Matlab向量运算myVector(';:';)(';:';)的作用是什么?,matlab,vector,Matlab,Vector,我在函数mavolcanoplot.m中遇到了以下表达式: X = X.(':')(':'); 我尝试了一个简单的例子X=[1 2 3],但后来我得到了 来自非结构数组对象的结构内容引用 因为我不知道表达式的作用,所以我不知道测试它时X应该是什么样子 有谁能告诉我这个表达式的作用吗?根据 对DataMatrix对象使用点索引时,使用单引号内的冒号指定所有行或所有列,(“:”) 看看这个例子: import bioma.data.* dmo = DataMatrix(rand(3,3), {'A

我在函数
mavolcanoplot.m
中遇到了以下表达式:

X = X.(':')(':');
我尝试了一个简单的例子
X=[1 2 3]
,但后来我得到了

来自非结构数组对象的结构内容引用

因为我不知道表达式的作用,所以我不知道测试它时
X
应该是什么样子

有谁能告诉我这个表达式的作用吗?

根据

对DataMatrix对象使用点索引时,使用单引号内的冒号指定所有行或所有列,
(“:”)

看看这个例子:

import bioma.data.*
dmo = DataMatrix(rand(3,3), {'A', 'B', 'C'}, {'X','Y','Z'})

dmo = 

         X          Y          Z      
    A    0.69908    0.54722    0.25751
    B     0.8909    0.13862    0.84072
    C    0.95929    0.14929    0.25428

>> %to extract all rows and first two columns (X and Y)
>> %you can specify any of column scripts and column labels
>> %same goes for rows
>> dmo.(':')(1:2)   % or  dmo.(':')({'X','Y'})

ans =

    0.6991    0.5472
    0.8909    0.1386
    0.9593    0.1493

>> dmo.(':') %or dmo.(':')(':')  to extract all rows and columns

ans =

    0.6991    0.5472    0.2575
    0.8909    0.1386    0.8407
    0.9593    0.1493    0.2543

此外,指定不存在的行/列标签将给出
1
,即

>> dmo.('e')('X')

ans =

     1
end
不能用于索引

>> dmo.(end)('X')
Error: The end operator must be used within an array index
expression.

你能提供一个到上述代码的链接吗?它在生物信息学工具箱的
mavolcanoplot.m
中,所以我不能真正向你发送代码的链接,但这是一个让我想到它的问题:你尝试过的例子是一个矩阵,在执行此操作之前,您从中获取此行的代码会明确检查
X
是否属于数据类型
bioma.data.DataMatrix
。我无法创建该类型的矩阵来测试它(我没有工具箱),因此您知道表达式的作用吗?这个表达式只适用于处理这种类型的矩阵吗?也许值得注意的是,这是一种不同寻常的MATLAB语法,例如矩阵只使用
(:)
。我相信这是DataMatrix对象能够命名行和列的症状,可以通过相应的字符串
X.('myRowName')
访问这些行和列。这更类似于结构类型,因此“DataMatrix”中的“matrix”一词可能会产生误导。@Wolfie我以前从未使用过DataMatrix对象,因此感谢您的解释。@Wolfie虽然不太熟悉,
:“
也可以用于数值数组、字符数组或单元格数组,而不是
。尝试
x=magic(3);x(':');y=num2单元(x),y(“:”)