Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

array operation for merging two arrays

1 Ansicht (letzte 30 Tage)
sermet
sermet am 20 Mai 2016
Geschlossen: Azzi Abdelmalek am 20 Mai 2016
data_1=[10;20;30;40];
data_2=[40;10];
data_3=[11;12];
for i=1:numel(data_2)
idx(i)=find(data_2(i)==data_1);
end
I need to merge data_2 and data_3 w.r.t idx array as follows;
merged_data=[10;11;12;40];
idx ([4 1]) determines the row number of 40 and 10 (data_2) within merged_data. Other row of the merged_data belongs to data_3.
data_2 and data_1 arrays always share at least 2 numbers. I need to merge data_2 and data_3 as an automatic way, keeping the order of rows w.r.t idx.
  2 Kommentare
sermet
sermet am 20 Mai 2016
Azzi, please read my comment in the previous question.

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 20 Mai 2016
Bearbeitet: Andrei Bobrov am 20 Mai 2016
union(intersect(data_1,data_2),data_3)
or
merge_data = data_1
merge_data(~ismember(merge_data,data_2)) = data_3
  1 Kommentar
sermet
sermet am 20 Mai 2016
Bearbeitet: sermet am 20 Mai 2016
Andrei, it doesn't work all the time. Assume,
data_2=[20;30];
idx=[2 3];
Then, merged_data should be;
merged_data=[11;20;30;12];
but merged_data from your code;
merged_data=[11;12;20;30]; % it is ascending mode thus the order cannot be protected.
20 should be in the second row of the merged_data and 30 should be in the 3rd row of the merged_data w.r.t. idx array.

Weitere Antworten (0)

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by