說我有一排:Matlab的:如何排序數據下降不包括NaN的
NaN的 29.99 30.00 NaN的 24.32 NaN的 ...............
如何對數據進行降序排序並選擇前10%的最大數量?
'sort'函數將NaN作爲「最大」~~~我該如何排除它?
謝謝!
說我有一排:Matlab的:如何排序數據下降不包括NaN的
NaN的 29.99 30.00 NaN的 24.32 NaN的 ...............
如何對數據進行降序排序並選擇前10%的最大數量?
'sort'函數將NaN作爲「最大」~~~我該如何排除它?
謝謝!
你可以先排序行,然後排除NaN的
sorted_row = sorted_row(~isnan(sorted_row));
這將從排序行中刪除所有的NaN。
更好的是,爲了節省計算量,您應該在排序前排除NaN。
sorted_row = sort(row(~isnan(row)));
嘗試使用後的排序: sorted_row(~isnan(sorted_row))
如果你只需要選擇您可以使用QUANTILE或PRCTILE功能從統計工具箱(沒有那種需要)前10%的人數最多:
x_largest = x(x >= quantile(x, 0.9));
或
x_largest = x(x >= prctile(x, 90));
這些函數不考慮NaN。
好!!謝謝! – user1205030 2012-02-15 19:16:24
非常感謝! – user1205030 2012-02-15 16:58:25
我不相信'row〜= NaN'按預期工作。例如'x = [1 2 NaN]; x(x〜= NaN)'將返回'x = 1 2 NaN'。你必須使用'x(〜isnan(x))' – 2012-02-15 18:07:03
@AeroEngy你是對的。我糾正了它。 – Phonon 2012-02-15 18:13:08