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

基于elliptic Fourier descriptors的形状重建及Momocs包使用求助

耳石椭圆傅里叶描述子归一化与分组平均形状重建R脚本

实现步骤

1. 依赖包安装与加载

# 首次运行先安装依赖包
# install.packages(c("Momocs", "readxl", "dplyr", "RColorBrewer"))
library(Momocs)
library(readxl)
library(dplyr)
library(RColorBrewer)

2. 数据导入与格式转换

将你获取的Excel数据存到本地后,替换下方路径导入数据:

# 导入本地Excel数据,替换为你自己的文件存储路径
raw_data <- read_excel("替换为你的本地文件绝对路径/本地数据文件名.xlsx")

# 拆分分组信息与EFD系数
# 假设数据中站点分组列名为site,EFD系数从第2列开始,按A1/B1/C1/D1...An/Bn/Cn/Dn顺序排列
site_group <- raw_data$site
efd_matrix <- as.matrix(raw_data[, !colnames(raw_data) %in% c("site")])

# 转换为Momocs可识别的EFD对象
efd_obj <- Out(efd = efd_matrix, fac = data.frame(site = as.factor(site_group)))

3. 基于一次谐波的EFD归一化

# 以第一谐波为基准,完成大小、方向、位置的归一化
efd_normalized <- efourier_norm(efd_obj, align = TRUE, start = 1)

4. 按站点计算平均形状

# 按站点分组计算组内平均形状
site_mean_shapes <- efd_normalized %>%
  group_by(site) %>%
  mean()

5. 结果可视化验证

# 叠加展示所有站点的平均形状对比
pile(site_mean_shapes, cols = brewer.pal(nlevels(efd_normalized$fac$site), "Set2"), lwd = 2)

# 分面单独展示每个站点的平均形状
facets(site_mean_shapes, ~site, nc = 2)

注意事项

  • 导入数据前需确认你的Excel表列结构:如果分组列名不是site,或者EFD系数的起始列、排列顺序和上述假设不一致,需对应调整代码中的列筛选逻辑
  • 若运行时报错谐波数量不匹配,可先打印dim(efd_matrix)确认列数为4的整数倍,对应你提取的谐波数量
  • 归一化后可通过efourier_contour(efd_normalized[1])绘制单个样本的轮廓,验证归一化效果是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 13:15:00