Combining two arrays using a seconds order

1 Ansicht (letzte 30 Tage)
Fatih
Fatih am 18 Feb. 2024
Kommentiert: Fatih am 20 Feb. 2024
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 Kommentare
Rik
Rik am 18 Feb. 2024
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 am 18 Feb. 2024
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)]
++

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 18 Feb. 2024
Bearbeitet: Matt J am 18 Feb. 2024
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

Weitere Antworten (0)

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by