MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   快速的MATLAB方法以使用排序行更改列顺序 (https://www.labfans.com/bbs/showthread.php?t=26252)

poster 2019-12-14 20:13

快速的MATLAB方法以使用排序行更改列顺序
 
我有数据(数字M x N,n> 2),该数据按第一列排序,然后按第二列排序。有谁知道一种有效的算法来将数据转换为先由第二列然后由第一列排序?显然,sortrows(data,[2,1])可以解决问题,但是我正在寻找一种可以利用输入数据的现有结构来提高速度的方法,因为M非常大。

此外,前两列中的数据是一组已知的整数(每个整数都比M小得多)。



[B]回答:[/B]

基于MATLAB R2010b的帮助文档,函数[URL="http://www.mathworks.com/help/techdoc/ref/sortrows.html"]SORTROWS[/URL]使用[I]稳定[/I]版本的[URL="http://en.wikipedia.org/wiki/Quicksort"]quicksort[/URL] 。由于[URL="http://en.wikipedia.org/wiki/Sorting_algorithm#Classification"]稳定的排序算法“用相同的键保持记录的相对顺序”[/URL] ,因此您可以通过简单地相对于第二列采用已排序的数据来实现所需的目标:

data = sortrows(data,2); 此结果将保持第一列中元素的相对顺序,以使数据将首先由第二列排序,然后再由第一列排序。



[url=https://stackoverflow.com/questions/4852841]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 04:29

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.