我无法解决这个问题,我整个上午一直坐着。 我需要log2转换DataMatrix的所有元素,然后使用逻辑向量来提取子集。这是问题所在:
>> get(dataSet2) %Error prone
Name: ''
RowNames: {195x1 cell}
ColNames: {1x22283 cell}
NRows: 195
NCols: 22283
NDims: 2
ElementClass: 'double'
A = log2(dataSet2);
>> get(A)
Name: ''
RowNames: {195x1 cell}
ColNames: {1x22283 cell}
NRows: 195
NCols: 22283
NDims: 2
ElementClass: 'double'
>> A(outputVector2, :)
Error using message
In 'bioinfo:DataMatrix:subsref:UnrecognizedRowName', parameter {1} must be a scalar.
Error in bioma.data.DataMatrix/subsref (line 61)
error(message('bioinfo:DataMatrix:subsref:UnrecognizedRowName',
commaSeparatedList( rowSubNames( rowIndices==0 ) )))
这是另一次尝试:
>> B=dmarrayfun(@log2, dataSet2);
Error using bioma.data.DataMatrix>createDataMatrix (line 207)
The argument MATRIX must be a 2-dimensional numeric or logical array.
Error in bioma.data.DataMatrix (line 187)
obj = createDataMatrix(obj, varargin{:});
Error in bioma.data.DataMatrix/dmarrayfun (line 138)
b = bioma.data.DataMatrix(bMatrix, rowNames,colNames);
使用dmarrayfun查看log2,它输出复数,即3.5 + 0.0i。 最怪异的部分当然是它在我的其他DataMatrix上完美运行:
>> get(dataSet) %Functional
Name: ''
RowNames: {264x1 cell}
ColNames: {1x22283 cell}
NRows: 264
NCols: 22283
NDims: 2
ElementClass: 'double'
可能有一些简单的转换或我遗漏的任何东西。关于我能做什么的任何想法都会有很大的帮助。
答案 0 :(得分:0)
找到解决方案叹息。
将@real应用于整个DataMatrix解决了它。 它仍然无法解释为什么log2只是神奇地决定使用复数。