MATLAB: How to find subsets of different matrices

subsets

i have matrices as c1=[1 5 6] c2=[3 2 0] c3=[4 7 0] and another matrix as b=[3 5 6]. now the elements in b matrix appears more in which of c1 c2 c3. assign this b matrix to that. for this problem the b=[3 5 6] goes to c1. so the required output will be [1 5 6], [3 5 6]

Best Answer

Numbered variables are a bad idea. Using numbered variables will make writing code harder. So the first thing to do is put all of those C1s into one variable M:
>> M = [c1;c2;c3]
M =
1 5 6
3 2 0
4 7 0
Then your task is trivial using bsxfun, sum, and max:
>> [~,idx] = max(sum(bsxfun(@eq,M,b),2));
>> [M(idx,:);b]
ans =
1 5 6
3 5 6