查找包含整数和NaN的列

时间:2016-02-04 20:47:56

标签: matlab matrix nan

我的矩阵包含数值(浮点数)和分类值(Int)

作为

A = 1   NaN   2.2   3.2  4
    NaN 7.9   5.1   NaN  5
    3    5.5  NaN   4.1  NaN

我想把它分成矩阵; 一个包含Int值,另一个包含浮点值

 it = 1   4
      NaN 5
      3   NaN

  flt = NaN  2.2 3.2
      7.9  5.1 NaN
      5.5  NaN 4.1

我使用以下代码

int_cols = all( round(A)==A, 1 ); %// logical indexing into integer columns
it = A(:,int_cols);
flt = A(:,~int_cols);

然而,NaN不等于NaN,所以它出现在flt矩阵中,它= []。

是否有任何可以提供帮助的功能?

2 个答案:

答案 0 :(得分:0)

你可以使用这样的东西,

curl --compressed "http://daks2k3a4ib2z.cloudfront.net/56938a33feb451344a7acab7/css/compass-hls.eedd6aab0.min.css"

答案 1 :(得分:0)

如果您将all功能更改为条件isnan(A)|round(A)==A,您将获得预期的输出。在这种情况下,NaN s基本上被忽略了,因为在列的任何行中都有一个浮点数(否则会被NaN s填充)仍然会返回false,但是NaN位于整数列仍将返回true。需要注意的是,如果你有一个完全NaN的列,它将显示为一个int。

对于你的例子:

A = [1   NaN   2.2   3.2  4;
     NaN 7.9   5.1   NaN  5;
     3    5.5  NaN   4.1  NaN];
int_cols = all(isnan(A)|round(A)==A,1);
it = A(:,int_cols);
flt = A(:,~int_cols);

在此之后,

it = 1   4
     NaN 5
     3   NaN

flt = NaN  2.2 3.2
      7.9  5.1 NaN
      5.5  NaN 4.1