Matlab中的数组比较

use*_*552 2 arrays matlab compare

是否有内置的Matlab函数可以按以下方式比较数组?

function comparison = elementcompare(array1,array2)

comparison=logical(true);
for i=1:length(array1)
    if ~any(array1(i)==array2)
        comparison=logical(false);
    end
end
Run Code Online (Sandbox Code Playgroud)

这个比较,如果array1中的每个元素都可以在array2中找到,则返回true,看起来非常基本,但我无法找到它.

谢谢!

Lui*_*ndo 5

最直接的方法是使用ismember:

comparison = all(ismember(array1(:), array2(:)));
Run Code Online (Sandbox Code Playgroud)

它也可以用setdiff:

comparison = isempty(setdiff(array1(:), array2(:)));
Run Code Online (Sandbox Code Playgroud)

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

comparison = all(any(bsxfun(@eq, array1(:).', array2(:))));
Run Code Online (Sandbox Code Playgroud)

甚至unique:

comparison = numel(unique([array1(:); array2(:)]))==numel(unique(array2(:)));
Run Code Online (Sandbox Code Playgroud)