How to get origin vector form indexd matrix

2 views (last 30 days)
I have a 1xK row vector A generated by randi function, and K is even number
K=6;
A = randi([50 500],1,K);
A will rearrage by a K/2x1 index matrix which the index matrix is obtained from some algorithm, for example
idx = [1 3;4 5;2 6];
B = A(idx);
I want to get a vector C same as A from B, but I can't do
C = A
in my case. How should I do?
Very appreciate for any suggestion.

Accepted Answer

Jan
Jan on 18 May 2021
Edited: Jan on 18 May 2021
K = 6;
A = randi([50 500], 1, K)
A = 1×6
71 409 445 202 193 95
idx = [1 3;4 5;2 6];
B = A(idx)
B = 3×2
71 445 202 193 409 95
C(idx) = B
C = 1×6
71 409 445 202 193 95
Of course, because if you omit the indirection over B you have:
C(idx) = A(idx)
which is an exact copy.

More Answers (1)

Scott MacKenzie
Scott MacKenzie on 18 May 2021
idx2 = [1 3 4 2 5 6];
C = B(idx2)
  2 Comments
WJ
WJ on 18 May 2021
Thanks for answer, but the idx will be dynamic not fix.
Scott MacKenzie
Scott MacKenzie on 18 May 2021
Edited: Scott MacKenzie on 18 May 2021
Ok, got it. See Jan's answer. He's nailed it.

Sign in to comment.

Tags

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!