如何在MATLAB中计算两个频率向量之间的余弦相似性?
我需要在MATLAB中找到两个频率向量之间的余弦相似性 示例向量:如何在MATLAB中计算两个频率向量之间的余弦相似性?,matlab,vector,cosine-similarity,Matlab,Vector,Cosine Similarity,我需要在MATLAB中找到两个频率向量之间的余弦相似性 示例向量: a = [2,3,4,4,6,1] b = [1,3,2,4,6,3] 如何在MATLAB中测量这些向量之间的余弦相似性?快速查看这些向量的数学定义 从定义上讲,你只需要向量的平方除以向量的乘积 % MATLAB 2018b a = [2,3,4,4,6,1]; b = [1,3,2,4,6,3]; cosSim = sum(a.*b)/sqrt(sum(a.^2)*sum(b.^2)); % 0.9
a = [2,3,4,4,6,1]
b = [1,3,2,4,6,3]
如何在MATLAB中测量这些向量之间的余弦相似性?快速查看这些向量的数学定义 从定义上讲,你只需要向量的平方除以向量的乘积
% MATLAB 2018b
a = [2,3,4,4,6,1];
b = [1,3,2,4,6,3];
cosSim = sum(a.*b)/sqrt(sum(a.^2)*sum(b.^2)); % 0.9436
或者,您可以使用
cosSim = (a(:).'*b(:))/sqrt(sum(a.^2)*sum(b.^2)); % 0.9436
这给出了相同的结果
阅读后,为了避免将您发送到,我添加了另一种使用MATLAB内置线性代数函数的方法,以及 有关详细信息,请参见
方法性能:
sum(a.*b)/sqrt(sum(a.^2)*sum(b.^2))
(a(:).*b(:)/sqrt(sum(a.^2)*sum(b.^2))
dot(a,b)/(norm(a)*norm(b))
每个点表示10个随机生成的向量的计算时间 快速浏览一下的数学定义
% MATLAB 2018b
a = [2,3,4,4,6,1];
b = [1,3,2,4,6,3];
cosSim = sum(a.*b)/sqrt(sum(a.^2)*sum(b.^2)); % 0.9436
从定义上讲,你只需要向量的平方除以向量的乘积
% MATLAB 2018b
a = [2,3,4,4,6,1];
b = [1,3,2,4,6,3];
cosSim = sum(a.*b)/sqrt(sum(a.^2)*sum(b.^2)); % 0.9436
或者,您可以使用
cosSim = (a(:).'*b(:))/sqrt(sum(a.^2)*sum(b.^2)); % 0.9436
这给出了相同的结果
阅读后,为了避免将您发送到,我添加了另一种使用MATLAB内置线性代数函数的方法,以及 有关详细信息,请参见
方法性能:
sum(a.*b)/sqrt(sum(a.^2)*sum(b.^2))
(a(:).*b(:)/sqrt(sum(a.^2)*sum(b.^2))
dot(a,b)/(norm(a)*norm(b))
每个点表示10个随机生成的向量的计算时间 如果您有统计工具箱,您可以使用带有输入标志的函数,输入标志为1减去余弦相似性:
% MATLAB 2018b
a = [2,3,4,4,6,1];
b = [1,3,2,4,6,3];
cosSim = sum(a.*b)/sqrt(sum(a.^2)*sum(b.^2)); % 0.9436
a = [2,3,4,4,6,1];
b = [1,3,2,4,6,3];
result = 1-pdist2(a, b, 'cosine');
如果您有统计工具箱,可以使用带有输入标志的函数,输入标志为1减去余弦相似性:
a = [2,3,4,4,6,1];
b = [1,3,2,4,6,3];
result = 1-pdist2(a, b, 'cosine');
@quart ul ainabid我正在测试以验证,但我猜测使用&的方法对于大向量(许多元素)将更快,但任何合理的向量长度在运行时都不会显示差异。@quart ul ainabid我正在测试以验证,但我猜测使用&的方法对于大向量(许多元素)将更快但是任何合理的向量长度都不会在运行时显示出差异。我这里不再有Matlab供您测试,但我相信下面链接中的函数可以快速帮助您实现所需功能(请参见选项卡“函数”):我这里不再有Matlab供您测试,但是我相信下面链接中的函数可以为您提供所需的快速帮助(请参见选项卡“函数”):非常聪明-我不会想到
pdist2
函数(+1)。在阅读了文档之后,它是一个非常通用的工具。非常聪明-我不会想到pdist2
函数(+1)。在阅读了文档之后,它是一个非常通用的工具。