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(“:”)