查找同时包含整数和 NaN 的列
Finding columns that contain both integers and NaN
我有一个包含数值(浮点)和分类值(整数)的矩阵
作为
A = 1 NaN 2.2 3.2 4
NaN 7.9 5.1 NaN 5
3 5.5 NaN 4.1 NaN
我想把它分成矩阵;
一个包含 Int 值,另一个包含 float 值,如
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 矩阵中并且它 = [].
有什么功能可以帮助吗?
你可以使用这样的东西,
A = [1 NaN 2.2 3.2 4;
NaN 7.9 5.1 NaN 5;
3 5.5 NaN 4.1 NaN];
B = isnan(A);
A(B) = 0;
int_cols = all( round(A)==A, 1 );
A(B) = NaN;
it = A(:,int_cols);
flt = A(:,~int_cols);
如果您将 all
函数更改为条件 isnan(A)|round(A)==A
,您将获得预期的输出。在这种情况下 NaN
s 基本上被忽略了,因为在用 NaN
s 填充的列的任何行中有一个浮点数仍然 return 为假,但是 [=14=一列整数中的 ]s 仍将 return 为真。需要注意的是,如果你有一列完全是 NaN
s,它将显示为一个整数。
以你的例子为例:
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
我有一个包含数值(浮点)和分类值(整数)的矩阵
作为
A = 1 NaN 2.2 3.2 4
NaN 7.9 5.1 NaN 5
3 5.5 NaN 4.1 NaN
我想把它分成矩阵; 一个包含 Int 值,另一个包含 float 值,如
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 矩阵中并且它 = [].
有什么功能可以帮助吗?
你可以使用这样的东西,
A = [1 NaN 2.2 3.2 4;
NaN 7.9 5.1 NaN 5;
3 5.5 NaN 4.1 NaN];
B = isnan(A);
A(B) = 0;
int_cols = all( round(A)==A, 1 );
A(B) = NaN;
it = A(:,int_cols);
flt = A(:,~int_cols);
如果您将 all
函数更改为条件 isnan(A)|round(A)==A
,您将获得预期的输出。在这种情况下 NaN
s 基本上被忽略了,因为在用 NaN
s 填充的列的任何行中有一个浮点数仍然 return 为假,但是 [=14=一列整数中的 ]s 仍将 return 为真。需要注意的是,如果你有一列完全是 NaN
s,它将显示为一个整数。
以你的例子为例:
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