我有两个单元格数组 R 和 C(两个向量,R(n 元素),C(m 元素)),我的任务是将 R 的每个元素与 R 的每个元素以及 C 的每个元素与每个元素进行比较C.比较是找到两个单元格的交集。结果我想获得两个矩阵。R nxn 的一个矩阵 Q,其中单元格 Q(i,j) 是两个元素 R(i) 和 R(j) 的交集,而 C mxm 的第二个矩阵 P,其中单元格 P(i,j) 是两个元素的交集两个元素 C(i) 和 C(j)。通常我可以使用两个for循环来做到这一点,但是我的数据很大,我想知道是否有任何方法可以加快计算速度?第一个想法是替换单元格数组,其中每个单元格中是我要比较的行(向量 R)或列(向量 C)的索引(二进制矩阵 BM 的行和列,BM 是输入数据)。因此,如果R(1) = {2 3 4}
, BM 是 5x5, 那么R(1,:)=[0 1 1 1 0]
. 现在拥有这个二进制矩阵 RI 可以仅通过一个循环将每一行与每一行进行比较。但是我仍然需要回到行数,例如
R(1,:) = [0 1 1 1 0];
R(2,:) = [0 1 1 0 0]; %then
Q(1,2) = [0 1 1 0 0]; %(intersection of element R(1) and R(2)) and
C(1,:) = [1 1 0 0 0];
C(2,:) = [1 0 0 1 0]; %then
P(1,2) = [1 0 0 0 0]; % Now I want to obtain
Results(i,j) = sum(BM(Q(1,2),P(1,2)))=sum(BM([2 3],[1]));
你知道如何处理这个问题,并比较两个没有两个循环的单元数组向量吗?