Matlab:如何对不包括NaN的数据下降进行排序

发布于 2025-01-05 17:18:48 字数 177 浏览 2 评论 0原文

假设我有一行:

NaN 29.99 30.00 NaN 24.32 NaN

............我按降序对数据进行排序并选择前 10% 最大的数字?

‘sort’函数会将NaN作为“最大”~~~我怎样才能排除它呢?

谢谢!!

Say I have a row:

NaN 29.99 30.00 NaN 24.32 NaN ...............

How can I sort the data in descending order and select the top 10% largest number?

The 'sort' function will put NaN as the "largest"~~~ how can I exclude it?

Thanks!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

那支青花 2025-01-12 17:18:48

您可以先对行进行排序,然后排除 NaN,

sorted_row = sorted_row( ~isnan(sorted_row) );

这将从排序的行中删除所有 NaN。

更好的是,为了节省计算,您应该在排序之前排除 NaN。

sorted_row = sort( row(~isnan(row)) );

You can first sort the row, and then exclude the NaN's

sorted_row = sorted_row( ~isnan(sorted_row) );

This will remove all NaNs from the sorted row.

Better Yet, to save computations , you should exclude NaNs before you sort.

sorted_row = sort( row(~isnan(row)) );
久光 2025-01-12 17:18:48

尝试使用排序后:
sorted_row(~isnan(sorted_row))

Try using after sort:
sorted_row(~isnan(sorted_row))

昵称有卵用 2025-01-12 17:18:48

如果您只需要选择前 10% 的最大数字,您可以使用 QUANTILE 或 Statistical Toolbox 中的 PRCTILE 函数(无排序需要):

x_largest = x(x >= quantile(x, 0.9));

或者

x_largest = x(x >= prctile(x, 90));

这些函数不考虑 NaN。

If you just need to select the top 10% largest numbers you can use QUANTILE or PRCTILE functions from Statistical Toolbox (no sort needed):

x_largest = x(x >= quantile(x, 0.9));

or

x_largest = x(x >= prctile(x, 90));

Those functions don't take NaNs into account.

醉生梦死 2025-01-12 17:18:48
[~, iSort] = sort(x, 'descend'); % Sort x including NaNs
iSort(isnan(x(iSort))) = []; % Now remove indices to sorted x which are NaNs
[~, iSort] = sort(x, 'descend'); % Sort x including NaNs
iSort(isnan(x(iSort))) = []; % Now remove indices to sorted x which are NaNs
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文