逻辑数组不止一个维度

时间:2012-06-04 22:31:37

标签: matlab matrix nan

        adc.nv is 789 X 2 array

        in = ~isnan(adc.nv);

        nv = adc.nv(in);

在我这样做之后,我得到1576 X 1阵列而不是788 X 2阵列

2 个答案:

答案 0 :(得分:1)

此处解释了此行为:http://www.mathworks.nl/help/techdoc/math/f1-85462.html#bq7egb6-1

由于

in = ~isnan(adc.nv);

in在每行和/或列中可以有不同数量的true / false元素,结果矩阵adc.nv(in)可能每行/每列具有不同数量的元素,因此不能构造为矩阵所以Matlab将它们全部放在一个向量中。

答案 1 :(得分:0)

也许您打算消除包含NaN值的行。例如:

>> x = rand(6,2);
>> x(3,1) = nan; x(5,2) = nan;
>> x
x =
      0.81472       0.2785
      0.90579      0.54688
          NaN      0.95751
      0.91338      0.96489
      0.63236          NaN
      0.09754      0.97059

现在:

>> newX = x(~any(isnan(x),2),:)
newX =
      0.81472       0.2785
      0.90579      0.54688
      0.91338      0.96489
      0.09754      0.97059