You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab实现:判断多行矩阵每行与三个单行矩阵的最相似匹配

矩阵行与参考矩阵的相似性匹配实现

问题背景

现有三个单行参考矩阵:

a = [0.4 0.25 0.5 -0.6 0.2]
b = [-0.8 0 0 0.7 -0.25]
c = [0.15 -0.4 -0.8 0.3 -0.05]

以及多行目标矩阵:

x = [0.78   0.51    -0.27   -1.18   1.12;
    -1.28   0.51    -0.27   1.22    1.12;
    -1.28   0.96    -0.27   -0.22   0.14;
    1.30    0.51    0.71    -1.18   0.63;
    0.78    -1.32   -1.76   0.25    -1.79]

需要判断x的每一行分别与a、b、c中哪一个最相似,输出类似“第1行最相似于a;第2行最相似于c”的结果。

实现步骤(Matlab环境)

  • 合并参考矩阵
    将a、b、c合并为一个3行的参考矩阵,方便批量计算距离:

    ref = [a; b; c];
    
  • 计算行与行之间的距离
    使用pdist2函数(比pdist更适合两个矩阵间的行距离计算),计算x中每一行与ref中每一行的欧氏距离(默认距离类型,也可根据需求更换为余弦距离等):

    distances = pdist2(x, ref);
    

    得到的distances是一个5×3的矩阵,每一行对应x的一行,每一列对应ref中a、b、c的距离。

  • 找到最小距离对应的参考矩阵
    对distances的每一行取最小值的索引,再映射到a、b、c:

    [~, idx] = min(distances, [], 2);
    labels = {'a', 'b', 'c'};
    
  • 输出结果
    循环遍历每一行,输出匹配结果:

    for i = 1:size(x, 1)
        fprintf('第%d行最相似于%s;', i, labels{idx(i)});
    end
    

运行结果

执行上述代码后,会输出:

第1行最相似于a;第2行最相似于b;第3行最相似于a;第4行最相似于a;第5行最相似于c;

内容的提问来源于stack exchange,提问作者Katharina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:27:18