mockup = [3,5,nan,2,4,nan,10,nan];
如何在忽略 NaN 的情况下按降序对这个向量进行排序?所得向量的长度必须与mockup,即我需要将所有 NaN 放在末尾。结果应该是这样的:mockupSorted = [10,5,4,3,2,NaN,NaN,NaN]
mockup
mockupSorted = [10,5,4,3,2,NaN,NaN,NaN]
实际上,我对各自的索引感兴趣,即第二个输出向量sort功能。所以,我正在寻找mockupSortedIdx = [7,2,5,1,4,NaN,NaN,NaN]
sort
mockupSortedIdx = [7,2,5,1,4,NaN,NaN,NaN]
您可以使用的两个输出sort然后使用isnan修改两个输出的顺序。
isnan
[vals, inds] = sort(mockup, 'descend'); bool = isnan(vals); mocksorted = [vals(~bool), vals(bool)]; % 10 5 4 3 2 NaN NaN NaN mocksortedind = [inds(~bool), vals(bool)]; % 7 2 5 1 4 NaN NaN NaN
另一种选择是使用ascend排序并仅对负数进行排序mockup自从ascend排序将放置NaN值在最后。
ascend
NaN
[vals, inds] = sort(-mockup); mocksorted = -vals; mocksortedind = inds;