2014-03-28 149 views
2

是否有任何內置的Matlab函數可以按照以下方式比較陣列?Matlab中的陣列比較

function comparison = elementcompare(array1,array2) 

comparison=logical(true); 
for i=1:length(array1) 
    if ~any(array1(i)==array2) 
     comparison=logical(false); 
    end 
end 

這種比較,如果array1中的每一個元素在數組2中找到返回true,似乎很基本的,但我沒能找到它。

謝謝!

回答

5

的最直接方式是使用ismember

comparison = all(ismember(array1(:), array2(:))); 

它也可以與setdiff完成:

comparison = isempty(setdiff(array1(:), array2(:))); 

像往常一樣,bsxfun可以做的工作:

comparison = all(any(bsxfun(@eq, array1(:).', array2(:)))); 

甚至unique

comparison = numel(unique([array1(:); array2(:)]))==numel(unique(array2(:)));