在Matlab中用NaN对矩阵进行重新排序
我在Matlab中有一个维数为mx2的矩阵。矩阵的某些行可以在第一列或第二列中包含NaN。我想通过将带有NaN的行放在末尾来重新排列矩阵的行。此外,我想首先列出第二列中带有NaN的行,然后列出第一列中带有NaN的行 比如说在Matlab中用NaN对矩阵进行重新排序,matlab,Matlab,我在Matlab中有一个维数为mx2的矩阵。矩阵的某些行可以在第一列或第二列中包含NaN。我想通过将带有NaN的行放在末尾来重新排列矩阵的行。此外,我想首先列出第二列中带有NaN的行,然后列出第一列中带有NaN的行 比如说 A=[NaN 11; 10 NaN; 5 8; 2 0; NaN 3; 9 NaN; 1000 0]; A_new= [5 8; 2 0; 1000
A=[NaN 11;
10 NaN;
5 8;
2 0;
NaN 3;
9 NaN;
1000 0];
A_new= [5 8;
2 0;
1000 0;
10 NaN;
9 NaN;
NaN 11;
NaN 3];
你能帮我写这段代码吗?我试过先排序,然后再重新排序
[ii ii] = sort(sum(isnan(A),2))
out = A(ii,:)
但它不起作用。您可以使用isnan+sortrows:
n = isnan(A); % a binary matrix representing position of nan
[~,idx]= sortrows(n); % get indexes for sorted elements
A_new = A(idx,:); % reorder the matrix based on idx
A_new =
5 8
2 0
1000 0
10 NaN
9 NaN
NaN 11
NaN 3