# Using a matrix as an index of another matrix

조회 수: 2(최근 30일)
댓글: Amine Alrharad 2023년 3월 10일
Hello everybody, I need some help please!
I am trying to sort a matrix (x) and go back to the original order based on the index matrix (idx2).
a = 30.0;
b = 100.0;
for i=1:5
x = (b-a).*rand(5,5) + a;
x = round(x,1);
end
[y, idx2] = sort(x, 2);

댓글을 달려면 로그인하십시오.

### 답변(1개)

Steven Lord 2023년 3월 10일
Take some shuffled data.
r = randperm(10)
r = 1×10
4 9 6 2 1 5 7 8 3 10
Now sort it.
[sortedData, indices] = sort(r)
sortedData = 1×10
1 2 3 4 5 6 7 8 9 10
indices = 1×10
5 4 9 1 6 3 7 8 2 10
We can get back to r from sortedData using the indices.
recreatedR(indices) = sortedData
recreatedR = 1×10
4 9 6 2 1 5 7 8 3 10
Let's check.
isequal(r, recreatedR)
ans = logical
1
We could also recreate sortedData from r using indices.
isequal(sortedData, r(indices))
ans = logical
1
##### 댓글 수: 1표시 없음숨기기 없음
Hello,
Using arrays it worked, but with matrix is not giving the same order.

댓글을 달려면 로그인하십시오.

### 범주

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!