Combining two arrays using a seconds order

1 次查看(过去 30 天)
I have two arrays.
number = [8 9 4 1 2 3 6 7 10 5]
number2 = [5 1 6 7 3 4 10 9 8 2]
I would like to replace the first 5 values of number (8 9 4 1 2)
with the same order for these values in number2 (1 4 9 8 2). So the revised number will be [1 4 9 8 2 3 6 7 10 5] as the next five numbers will not change.
Thanks in advance
  2 个评论
Rik
Rik 2024-2-18
Should it only be the first 5 values?
You can use the ismember function to do this. What have you tried so far?
Fatih
Fatih 2024-2-18
thanks, meanwhile I used exactly what you mentioned. The following code worked for me.
++
number = randperm(10, 10)
number2 = randperm(10, 10)
[tf, loc] = ismember(number(1:5), number2)
loc2 = sort(loc)
number = [number2(loc2) number(6:10)]
++

请先登录,再进行评论。

采纳的回答

Matt J
Matt J 2024-2-18
编辑:Matt J 2024-2-18
number = randperm(10, 10)
number = 1x10
10 5 4 3 1 9 8 6 2 7
number2 = randperm(10, 10)
number2 = 1x10
8 6 5 3 7 10 2 1 4 9
I=ismember(number2,number(1:5));
number(1:5)=number2(I)
number = 1x10
5 3 10 1 4 9 8 6 2 7

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by