我正在尝试比较两个单元格数组,1x160(a)和80x1(b)。我的单元格数组由内部有许多字符串的单元格组成。我想比较每个字符串,看看它们是否相等,如果它们相等,则插入新数组,否则插入 0。我找不到任何功能。我尝试了"isequal","strfind"等。他们都给了我下一个错误消息:
如果任何输入参数是单元格数组,则第一个参数必须是 字符串的单元格数组,第二个必须是字符数组。
这是我的代码!
function [inter]=Intersect2(a,b)
int=cell(0);
b2=[b;b];
for i=1:length(a)
if a{i,1}==b2{i,1}(1) ( or 'isequal','strfind')
int{i}=a{i};
else
int{i}=0;
end
end
比较字符数组的方法有很多种,其中之一就是strcmp
。
我们还将使用cellfun
来避免循环。
a = {'Dude', 'I', 'am', 'a', 'moose'};
b = {'Well', 'I', 'am', 'a', 'mouse'};
index = cellfun(@strcmp, a, b);
这将a
的每个元素与b
中的相应元素进行比较,返回一个逻辑数组index
,当元素匹配时1
,当元素不匹配时0
。
使用此选项分配匹配值:
int = cell(1, length(a));
int(index) = a(index);
int =
[] "我"是"一个" []
如果您愿意,可以扩展此概念以查找集合交集。