无法在特定DataMatrix上使用逻辑

时间:2013-12-04 09:43:33

标签: matlab

我无法解决这个问题,我整个上午一直坐着。 我需要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'

可能有一些简单的转换或我遗漏的任何东西。关于我能做什么的任何想法都会有很大的帮助。

1 个答案:

答案 0 :(得分:0)

找到解决方案叹息。

将@real应用于整个DataMatrix解决了它。 它仍然无法解释为什么log2只是神奇地决定使用复数。