Matlab 计算两个向量之间的相似性
我有一个矩阵M,它是一个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次
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