フィルターのクリア

Info

この質問は閉じられています。 編集または回答するには再度開いてください。

Solution to Earlier Question on Comparing data and returning indices

1 回表示 (過去 30 日間)
A
A 2011 年 5 月 24 日
閉鎖済み: John D'Errico 2020 年 10 月 6 日
Hello! This is not a question, but a reposting of a previous question that I asked with the answer that was supplied by the user Fangjun.
I needed to analyze four sets of data to find the matching number and return the indices of the matching numbers and all of their permutations.
My original data was:
A =
[2,8,10, 14 ,16 , 18, 20, 21, 21, 24, 24, 25, 29 , 33, 34 , 41,
43 , 46 , 46 ,49, 50 ,51 ,58, 58 , 60 ,64, 65, 66, 67, 93 ,96];
B =
[2,6 , 8, 10, 13 ,14 ,15,18 ,20 ,21 , 22, 24 ,25 ,28, 29,30 ,33 ,
34 ,38, 41 ,45 ,46 , 46 ,49 , 50 , 51 ,56 , 58 , 60 ,63 ,64 , 65, 66,67 ,68, 72, 73, 82, 93];
C =
[ 2 , 8, 10 , 14 , 16 ,18 ,20, 21, 21 , 24, 24 , 25 ,29 , 33, 34 ,41 ,
43 ,46 , 46 , 49 ,50 , 51 ,58 ,58 ,60 ,64 , 65 , 66, 67, 93,96];
D =
[2, 8 , 10 , 13 , 14 , 16 , 18, 20 , 21, 21, 24, 24, 25 , 28, 29 ,30 ,33 , 34, 38 ,41, 43 , 46,
49 ,50 , 51 , 58 , 58, 60 ,64, 65 , 66,67 ,68,73, 93, 96];
As an example as what I needed done:
Suppose four short sets of data:
A = [1, 2, 3, 5, 5, 7, 7, 9]
B = [1 ,3 ,6 ,7 ,9]
C = [1, 2, 3, 3, 7, 9]
D = [1, 3, 7, 9, 10, 11]
I would want to return the indices as:
indA = [1, 3, 3, 6, 7, 8]
indB = [1, 2, 2, 4, 4, 6]
indC = [1, 3, 4, 5, 5, 6]
indD = [1, 2, 2, 3, 3, 4]
Fangjun supplied a wonderful solution to this problem:
A = [2,8,10, 14 ,16 , 18, 20, 21, 21, 24, 24, 25, 29 , 33, 34 , 41, 43 , 46 , 46 ,49, 50 ,51 ,58, 58 , 60 ,64, 65, 66, 67, 93 ,96];
B = [2,6 , 8, 10, 13 ,14 ,15,18 ,20 ,21 , 22, 24 ,25 ,28, 29,30 ,33 ,34 ,38, 41 ,45 ,46 , 46 ,49 , 50 , 51 ,56 , 58 , 60 ,63 ,64 , 65, 66,67 ,68, 72, 73, 82, 93];
C = [ 2 , 8, 10 , 14 , 16 ,18 ,20, 21, 21 , 24, 24 , 25 ,29 , 33, 34 ,41 ,43 ,46 , 46 , 49 ,50 , 51 ,58 ,58 ,60 ,64 , 65 , 66, 67, 93,96];
D = [2, 8 , 10 , 13 , 14 , 16 , 18, 20 , 21, 21, 24, 24, 25 , 28, 29 ,30 ,33 , 34, 38 ,41, 43 , 46, 49 ,50 , 51 , 58 , 58, 60 ,64, 65 , 66,67 ,68,73, 93, 96];
Common=intersect(A,B);
Common=intersect(Common,C);
Common=intersect(Common,D);
[A_ind,B_ind,C_ind,D_ind]=deal([],[],[],[]);
for i_Common=1:length(Common)
A_find=find(ismember(A,Common(i_Common)));
B_find=find(ismember(B,Common(i_Common)));
C_find=find(ismember(C,Common(i_Common)));
D_find=find(ismember(D,Common(i_Common)));
for i_A=1:length(A_find)
for i_B=1:length(B_find)
for i_C=1:length(C_find)
for i_D=1:length(D_find)
A_ind=[A_ind,A_find(i_A)];
B_ind=[B_ind,B_find(i_B)];
C_ind=[C_ind,C_find(i_C)];
D_ind=[D_ind,D_find(i_D)];
end
end
end
end
end
Thank you to all the users who helped me answer this question.

回答 (0 件)

この質問は閉じられています。

Community Treasure Hunt

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

Start Hunting!

Translated by