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

如何在R中生成48个规则网格样本的欧氏距离矩阵?

在R中生成规则网格采样点的距离矩阵

步骤1:构建采样点的坐标矩阵

先确定48个点的网格布局,这里选择8列×6行的规则网格(8×6=48),相邻点水平/垂直间距均为120cm。通过expand.grid()生成所有点的坐标:

# 设置参数
spacing <- 120  # 相邻点间距(厘米)
n_col <- 8      # 网格列数
n_row <- 6      # 网格行数

# 生成所有采样点的坐标(x为水平方向,y为垂直方向)
coords <- expand.grid(
  x = seq(0, (n_col - 1) * spacing, by = spacing),
  y = seq(0, (n_row - 1) * spacing, by = spacing)
)

步骤2:计算欧氏距离矩阵

用R内置的dist()函数计算欧氏距离,再通过as.matrix()转换为48×48的矩阵格式:

# 计算距离矩阵
dist_matrix <- as.matrix(dist(coords, method = "euclidean"))

步骤3:(可选)为矩阵添加自定义命名

如果需要给采样点添加类似A1、A2、B1的命名,可执行以下代码:

# 生成行/列名称(格式:行字母+列数字)
point_names <- apply(expand.grid(LETTERS[1:n_row], 1:n_col), 1, function(x) paste0(x[1], x[2]))
rownames(dist_matrix) <- point_names
colnames(dist_matrix) <- point_names

验证结果

可以通过以下代码验证关键距离是否符合预期:

# A1到A2的距离(应为120cm)
dist_matrix["A1", "A2"]
# A1到B1的距离(应为120cm)
dist_matrix["A1", "B1"]
# A1到B2的距离(应为√(120²+120²)≈169.7cm)
dist_matrix["A1", "B2"]

你之前使用dist()失败,大概率是因为没有正确生成规则网格的坐标,或是未将dist()返回的dist类对象转换为矩阵格式。

内容的提问来源于stack exchange,提问作者Christoffer Bugge Harder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:25:06