Matlab 多个维度的逻辑阵列

Matlab 多个维度的逻辑阵列,matlab,matrix,nan,Matlab,Matrix,Nan,执行此操作后,我得到的是1576 X 1数组,而不是788 X 2数组也许您的意思是消除包含NaN值的行。例如: adc.nv is 789 X 2 array in = ~isnan(adc.nv); nv = adc.nv(in); 现在: 也许您想消除包含NaN值的行。例如: adc.nv is 789 X 2 array in = ~isnan(adc.nv); nv = adc.n

执行此操作后,我得到的是1576 X 1数组,而不是788 X 2数组

也许您的意思是消除包含NaN值的行。例如:

        adc.nv is 789 X 2 array

        in = ~isnan(adc.nv);

        nv = adc.nv(in);
现在:


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

        adc.nv is 789 X 2 array

        in = ~isnan(adc.nv);

        nv = adc.nv(in);
现在:


这里解释了这种行为:

因为

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

in
在每行和/或每列中可能有不同数量的真/假元素,结果矩阵
adc.nv(in)
在每行/每列中可能有不同数量的元素,因此无法构造为矩阵,因此Matlab将其全部放在一个向量中。

此行为在此处解释:

因为

>> newX = x(~any(isnan(x),2),:)
newX =
      0.81472       0.2785
      0.90579      0.54688
      0.91338      0.96489
      0.09754      0.97059
in
在每行和/或每列中可以有不同数量的真/假元素,结果矩阵
adc.nv(in)
在每行/每列中有不同数量的元素,因此不能构造为矩阵,因此Matlab将其全部放在一个向量中。

或者:
x(any(isnan(x),2),:) = [];或者:
x(任意(isnan(x),2),:)=[]