MATLAB: Check if any elements of cell array are equal

cell arraycell arraysMATLAB

Suppose if I have cell array a{1}=[1 1 0]; a{2}=[0 0 0]; a{3}=[0 0 0]. I want to check if any elements of the cell array are equal. If i use " isequal(a{:}) " then it returns "Logical 0". However, we can see that a{2} == a{3}. So, i need the answer to be "Logical 1" as some of the elements of the cell array are equal. Is there any built-in function to check that directly in MATLAB.

Best Answer

Matching:
>> a{1}=[1,1,0];
>> a{2}=[9,9,9,9];
>> a{3}=[1,1,0];
>> a{4}=[];
>> N = numel(a);
>> [X,Y] = ndgrid(1:N);
>> Z = tril(true(N),-1);
>> any(arrayfun(@(x,y)isequal(a{x},a{y}),X(Z),Y(Z)))
ans = 1
vs. non-matching:
>> a{1}=[1,1,1];
>> any(arrayfun(@(x,y)isequal(a{x},a{y}),X(Z),Y(Z)))
ans = 0