How to get index of each points in data?
1 次查看(过去 30 天)
显示 更早的评论
Let's say:
A= [ 111 111 111 22 %index 1
999 999 999 11 %index 2
555 555 555 44 %index 3
222 222 222 33] %index 4
If I want to reorder the rows in matrix A by sorting the elements of column 4 in ascending order, I will use this code:
sort_cell=arrayfun(@(c) sortrows(A,c),[4],'uniform',0);
% generate a cell by sorting matrix A in ascending of column 4
sort_A=sort_cell{:};
% convert cell "sort_cell_A" to matrix
The result will as follows:
sort_A= [ 999 999 999 11
111 111 111 22
222 222 222 33
555 555 555 44 ]
My question is: How can I get back the index matrix from "sort_A" matrix? I hope the result will be:
index=[2
1
4
3]
0 个评论
采纳的回答
更多回答(2 个)
Are Mjaavatten
2017-11-18
>> [~,ix] = sort(A(:,4))
ix =
2
1
4
3
>> sort_A = A(ix,:)
sort_A =
999 999 999 11
111 111 111 22
222 222 222 33
555 555 555 44
0 个评论
Stephen23
2017-11-18
编辑:Stephen23
2017-11-18
Your code would be much simpler if you called sort on the required column:
>> [~,idx] = sort(A(:,4))
idx =
2
1
4
3
>> B = A(idx,:)
B =
999 999 999 11
111 111 111 22
222 222 222 33
555 555 555 44
To get back the original order, call sort again on the indices:
>> [~,idy] = sort(idx)
idy =
2
1
4
3
>> C = B(idy,:)
C =
111 111 111 22
999 999 999 11
555 555 555 44
222 222 222 33
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!