Replacing elements in a vector

The values of an array match the index of elements in a vector. For example, the value of 5 in array1 below corresponds to whatever is in index 5 in vector1, i.e. the number 3 in this case. So how do I replace the value of the original number in array1 in the example by the number at the corresponding index in vector1? I realize this is a little confusing, so here's a mini example of what I want to do:
array1 = [1 2; 4 2; 5 5; 4 2];
vector1 = [2 1 1 4 3 4];
result = [2 1; 4 1; 3 3; 4 1];

 采纳的回答

array1 = [1 2; 4 2; 5 5; 4 2];
vector1 = [2 1 1 4 3 4];
result = [2 1; 4 1; 3 3; 4 1]
result = 4×2
2 1 4 1 3 3 4 1
result1 = vector1(array1)
result1 = 4×2
2 1 4 1 3 3 4 1

3 个评论

@Paul Wow, I didn't know you could do that. Very cool! Could you explain how that works? I don't get it, but I'd like to understand if you don't mind.
vector1(array1) treats each entry of array1 as the linear index into vector1. The output takes the same shape as array1. It's the same as
array1 = [1 2; 4 2; 5 5; 4 2];
vector1 = [2 1 1 4 3 4];
reshape(vector1(array1(:)),size(array1))
ans = 4×2
2 1 4 1 3 3 4 1
Thank you. That is really neat!

请先登录,再进行评论。

更多回答(1 个)

Your example isn't consistent. I'm assuming you want this:
A = [10 20; 30 40; 50 60];
idx = [2 1; 1 4; 3 3];
B = A.';
B = B(idx)
B = 3×2
20 10 10 40 30 30

1 个评论

Thank you, but no, that's not what I want. I've edited my question to hopefully make it clearer.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Matrix Indexing 的更多信息

产品

版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by