matlab - 用于添加单例维度和/或广播的语法糖
问题描述
我写了一些代码来计算从 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));
解决方案
推荐阅读
- django - 获取模型类中“created_by”字段的当前用户
- sql - SQL - 选择多个/所有列但排除一个或两个特定列中的重复数据?
- docker - 如何获取要在应用程序内部使用的 kubernetes pod 或部署 IP
- angular - Angular 中的 Promise:直接返回时的无限调用
- javascript - Angular 下载大块
- javascript - React js 状态和生命周期
- javascript - 是否可以在浏览器(前端)中安装 Joi 验证而不需要 babeling?
- javascript - 如何在滚动上实现jquery加载
- c# - 从 VSIX 应用程序连接到 Azure DevOps 失败
- javascript - 将从条形码扫描的字符串切片到 2 个输入框中