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

Matlab 计算两个向量之间的相似性,matlab,matrix,similarity,Matlab,Matrix,Similarity,我有一个矩阵M,它是一个29 x 18的双精度,类似这样: 1 1 1 ... 2 1 1 ... 3 1 2 ... 2 2 2 ... 2 1 3 ... 3 1 3 ... 1 3 3 ... ... 对于M中的每一对可能的两列,我想计算两列之间相同行的值相同的次数。以第1列和第2列为例,同一行的值相同的次数是2,因为M(1,1)=M(1,2)和M(4,1)=M(4,2)。当每列与每列(包括其本身)总数配对时,此计算对每列重复18次

我有一个矩阵M,它是一个
29 x 18的双精度
,类似这样:

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

29 4 5 3 ...
4 29 6 0 ...
5 6 29 7 ...
...
由于
N(2,1)=4
,这将表明列1和列2矩阵M具有相同行的4个匹配值


我该怎么做呢?

您可以这样做双for循环:

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