我的矩阵包含数值(浮点数)和分类值(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矩阵中,它= []。
是否有任何可以提供帮助的功能?
答案 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