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,看起来非常基本,但我无法找到它.
谢谢!
最直接的方法是使用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)