计算两个向量之间的相似性

时间:2017-03-29 01:26:53

标签: matlab matrix similarity

我有一个矩阵 M ,这是29 x 18 double,如下所示:

1   1   1 ...
2   1   1 ...
3   1   2 ...
2   2   2 ...
2   1   3 ...
3   1   3 ...
1   3   3 ...
...

对于 M 中每对可能的两列,我想计算两列之间相同行的值相同的次数。以第1列和第2列为例,自M(1,1) = M(1,2)M(4,1) = M(4,2)起,同一行的值相同的次数为 2 。对于每列,该计算重复18次,因为每列与包括其自身的总列数中的每一列配对。因此,输出(称为 N )将是18 x 18矩阵,每个值指示来自原始两个对应列的相同行的值相同的实例数。像这样的东西

29 4 5 3 ...
4 29 6 0 ...
5 6 29 7 ...
...

N(2,1) = 4开始,这表示列 1 和列 2 矩阵 M 具有同一行的4个匹配值

有没有人有任何建议怎么做?

1 个答案:

答案 0 :(得分:0)

你可以像这样做一个双循环:

result = zeros(18);
for i = 1:18
    for j = 1:18
        result(i,j) = nnz(M(:,i) == M(:,j));
    end
end