matlab中两行没有零的相应交集

时间:2017-08-21 04:24:35

标签: matlab intersection

我有一个矩阵(m * n)。对于每两行,我如何找到不为零的相应元素的数量。例如,对于以下行: r1 = [1,3,0,4],r2 = [5,0,0,4] ,答案是2.因为两行中的第一和第四个元素不为零。感谢

2 个答案:

答案 0 :(得分:3)

您可以使用矩阵乘法:

L = logical(m);     % convert the matrix to a logical matrix
result = L * L.';   % do matrix multiplication to compute number of corresponding elements

因此矩阵元素result(i,j)表示行i和行j之间的对应元素数。

答案 1 :(得分:0)

我假设您要考虑每个块两行;也就是说,第一行有第二行,第三行有第四行等。

m×n输入矩阵A重塑为2×m/2×n 3D数组,然后使用{{1 }}和all沿着适当的维度:

sum

例如,

result = sum(all(reshape(A, 2, [], size(A,2)), 1), 3);

结果是

A =
     0     2     0     0     0
     2     0     0     2     1
     1     0     1     2     2
     1     1     2     1     0
     1     1     1     1     2
     1     2     1     1     1