matlab实现余弦相似度的几种代码
时间: 2023-10-14 14:05:00 浏览: 132
方法一:使用内置函数
Matlab内置函数`pdist`和`squareform`可以计算余弦相似度。
```matlab
% 假设数据矩阵为X
X = [1 2 3; 4 5 6; 7 8 9];
% 计算余弦相似度
D = pdist(X,'cosine');
S = squareform(D);
```
方法二:使用公式计算
余弦相似度的公式为:
$cos(\theta)=\frac{x·y}{||x||_2||y||_2}$
其中$x$和$y$是两个向量,$||x||_2$和$||y||_2$分别是它们的2-范数。
```matlab
% 假设数据矩阵为X
X = [1 2 3; 4 5 6; 7 8 9];
[m,~] = size(X);
% 计算余弦相似度
S = zeros(m,m);
for i=1:m
for j=i+1:m
x = X(i,:);
y = X(j,:);
S(i,j) = dot(x,y)/(norm(x)*norm(y));
S(j,i) = S(i,j);
end
end
```
方法三:使用向量化计算
向量化计算可以提高效率。
```matlab
% 假设数据矩阵为X
X = [1 2 3; 4 5 6; 7 8 9];
[m,~] = size(X);
% 计算余弦相似度
S = X*X'./(sqrt(sum(X.^2,2))*sqrt(sum(X.^2,2)'));
```