Effacer les filtres
Effacer les filtres

Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

array operation for merging two arrays

1 vue (au cours des 30 derniers jours)
sermet
sermet le 20 Mai 2016
Clôturé : Azzi Abdelmalek le 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 commentaires
sermet
sermet le 20 Mai 2016
Azzi, please read my comment in the previous question.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 20 Mai 2016
Modifié(e) : Andrei Bobrov le 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 commentaire
sermet
sermet le 20 Mai 2016
Modifié(e) : sermet le 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.

Plus de réponses (0)

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by