首页 > 解决方案 > 用于添加单例维度和/或广播的语法糖

问题描述

我写了一些代码来计算从 M N 维点到 K 质心的每个笛卡尔距离,所以我有 points (M,N), centroids (K,N),我想要一个(M,K)结果。它有效,但我发现沿硬编码轴的整形和求和真的很笨重,有没有一种优雅的方式来写这个?

[M Nx] = size(X);
[K Nk] = size(centroids);
assert(Nx == Nk, "Dimensions do not match.")
X_reshape = reshape(X, [M 1 Nx]);
centroids_reshape = reshape(centroids, [1 K Nk]);
distance = sqrt(sum((X_reshape - centroids_reshape).^2, 3));

标签: matlab

解决方案


推荐阅读