Using a matrix as an index of another matrix

1 visualizzazione (ultimi 30 giorni)
Amine Alrharad
Amine Alrharad il 10 Mar 2023
Commentato: Amine Alrharad il 10 Mar 2023
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);
Thank you in advance

Risposte (1)

Steven Lord
Steven Lord il 10 Mar 2023
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 Commento
Amine Alrharad
Amine Alrharad il 10 Mar 2023
Hello,
Using arrays it worked, but with matrix is not giving the same order.

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by