How to get origin vector form indexd matrix

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)

idx2 = [1 3 4 2 5 6];
C = B(idx2)

2 Comments

Thanks for answer, but the idx will be dynamic not fix.
Ok, got it. See Jan's answer. He's nailed it.

Sign in to comment.

Products

Release

R2019b

Tags

Asked:

WJ
on 18 May 2021

Edited:

on 18 May 2021

Community Treasure Hunt

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

Start Hunting!