将 B 样条曲线拟合到控制路径

2023-12-13

我意识到在 R 中使用 B 样条存在很多问题和答案,但我还没有找到这个(看似简单)问题的答案。

给定一组描述控制路径的点,如何拟合 B 样条曲线并沿着曲线提取给定数量的点(例如 100)以进行绘图。问题是路径在 x 和 y 上都不是单调的。

控制路径示例:

path <- data.frame(
    x = c(3, 3.5, 4.6875, 9.625, 5.5625, 19.62109375, 33.6796875, 40.546875, 36.59375, 34.5, 33.5, 33),
    y = c(0, 1, 4, 5, 6, 8, 7, 6, 5, 2, 1, 0)
)

我主要看了splines但同样,大多数示例都是关于将平滑曲线拟合到数据。对于上下文,我正在考虑实施分层边缘捆绑 in R.


总体思路是独立预测 x 和 y,假设它们实际上是独立的:

library(splines)

path <- data.frame(
    x = c(3, 3.5, 4.6875, 9.625, 5.5625, 19.62109375, 33.6796875, 40.546875, 36.59375, 34.5, 33.5, 33),
    y = c(0, 1, 4, 5, 6, 8, 7, 6, 5, 2, 1, 0)
)
# add the time variable
path$time  <- seq(nrow(path))

# fit the models
df  <-  5
lm_x <- lm(x~bs(time,df),path)
lm_y <- lm(y~bs(time,df),path)

# predict the positions and plot them
pred_df  <-  data.frame(x=0,y=0,time=seq(0,nrow(path),length.out=100) )
plot(predict(lm_x,newdata = pred_df),
     predict(lm_y,newdata = pred_df),
     type='l')

您确实需要小心定义时间变量,因为路径并不独立于时间的选择(即使它们是连续的),因为样条曲线在预测变量空间中的点间距上不是不变的。例如:

plotpath  <-  function(...){
    # add the time variable with random spacing
    path$time  <- sort(runif(nrow(path)))

    # fit the models
    df  <-  5
    lm_x <- lm(x~bs(time,df),path)
    lm_y <- lm(y~bs(time,df),path)

    # predict the positions and plot them
    pred_df  <-  data.frame(x=0,y=0,time=seq(min(path$time),max(path$time),length.out=100) )
    plot(predict(lm_x,newdata = pred_df),
         predict(lm_y,newdata = pred_df),
         type='l',...)
}

par(ask=TRUE); # wait until you click on the figure or hit enter to show the next figure
for(i in 1:5)
    plotpath(col='red')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 B 样条曲线拟合到控制路径 的相关文章

  • 如何在R中得到一个大的稀疏矩阵? (> 2^31-1)

    我使用一些 C 代码从数据库中获取文本文件 并从该文件创建 dgcMatrix 类型稀疏矩阵Matrix包裹 我第一次尝试构建一个具有超过 2 31 1 个非稀疏成员的矩阵 这意味着稀疏矩阵对象中的索引向量也必须比该限制长 不幸的是 向量似
  • 在 R 中进行 Cox 回归后,将预测危险比列添加到数据帧中

    在 R 中运行 Cox PH 回归后 我需要在数据框中添加预测风险比的列 数据框是面板数据 其中 numgvkey 如果公司标识符 和年龄是时间标识符 您可以从此链接下载一小部分日期 https drive google com file
  • 可以明确声明包依赖项的版本吗?

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • R 中的 NA 替换函数

    我正在尝试替换矩阵中的 NA mat 零 我在用着mat is na mat lt 0 当我有 18946 个变量的 94531 个观察值或更小的矩阵时 效果很好 但我在 22752 个变量的 112039 个观察值的矩阵上尝试它 R 显示
  • 使用底格里斯河从纬度/经度获取人口普查区

    我有相对较多的坐标 我想获取其人口普查区 除了 FIPS 代码 我知道我可以使用以下命令查找各个纬度 经度对call geolocator latlon 已完成here https stackoverflow com questions 5
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 将列表中的列转换为 R 中的数据框

    我有使用 R 创建的以下列表 set seed 326581 X1 rnorm 10 0 1 Y1 rnorm 10 0 2 data data frame X1 Y1 lst lt replicate 100 df smpl lt dat
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 为绘图制作 2D 图例 - 双变量分区统计图

    我一直在玩双变量 choropleth 地图 并且一直在如何创建类似于 2d 图例的问题上陷入困境约书亚 史蒂文斯 http www joshuastevens net cartography make a bivariate chorop
  • R:表格格式

    我有一个包含以下列的 Excel 文件 Column1 Column2 Column3 ab bb 0 5 ab bc 0 1 ab cd 0 7 ab dd 0 8 ac bb 0 2 ac bg 0 8 ac ee 0 8 ac dd
  • 表单提交时出现 rvest 错误

    我想从以下网页中抓取数据 https swgoh gg u zozo collection 180 emperor palpatine https swgoh gg u zozo collection 180 emperor palpati
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • openjdk-8-jdk - 缺少 src.zip?

    以下是所需信息 apt list grep installed grep i openjdk 8 jdk WARNING apt does not have a stable CLI interface Use with caution i
  • Google 地图折线:标记包含单击的 LatLng 的两条折线坐标

    我在谷歌地图的折线中遇到问题 我有一条从一点到另一点的折线 当我单击折线时 我需要两端的纬度和经度 请问有人可以帮助我吗
  • 分数的2的补码表示法?

    我对此有点迷失 我需要使用两个小数位0 a 1 a 2 像这样 现在我可以使用 00 01 10 and 11但我也需要负数 2的补码 所以会 10 be 5 或者会是 25 与 11 那就是 75 或者会是 5 我很确定这两种情况都是前者
  • HTML5 Server 发送事件和多个客户端(不使用 Comet)

    我有一个用例 我想知道 HTML5 的 Server sent Events 是否适合 多个客户端 Javascript HTML5 浏览器 连接到 Web 服务器 具有 Java EE 后端 每个客户都可以随时查看不同的视图 具体取决于他
  • 如何接受/忽略QKeyEvent

    http qt project org doc qt 5 qwidget html keyPressEvent 请注意 QKeyEvent 以 isAccepted true 开头 因此您不需要 需要调用 QKeyEvent accept
  • 禁用 jQuery 自动完成下拉列表

    这是一个相当简单的问题 但如何禁用 jQuery 自动完成的下拉菜单 当用户开始输入时 我在响应回调上运行我自己的函数 我不需要任何其他东西出现 这就是我所拥有的 search autocomplete source app friends
  • 如何在C++中输出unicode方框图?

    抱歉 这听起来很简单 但我正在尝试使用来自的 unicode 字符在 Visual Studio 2017 中绘制一个简单的框https en wikipedia org wiki Box drawing character使用下面的代码
  • 这段代码是否安全,不会受到 SQL 注入的影响

    我想让我的代码尽可能安全 免受任何类型的攻击 我希望对下面使用的简单代码有一些了解 如果有任何关于如何使其更安全 如果它很脆弱 以及为什么会变得更安全的指示 那就太棒了 我读到 使用准备好的语句是防范攻击的最佳实践
  • 将块元素排列在一条水平线上

    我不知道 要么我不太擅长 搜索 艺术 要么这个话题太简单了 通常没有人问这个问题 但自从我开始我的网站以来 我一直在搜索这个问题 我的网页上只有四个块元素 第一个 Block 元素单独显示在顶部 第二个 第三个和第四个块元素 我想从下一行排
  • scipy.interpolate 中的 interp1d 函数使用什么算法

    所以我正在为我的数值课程编写一个Python程序 并且我必须编写一个三次样条程序 所以我实现了书中给出的三次样条公式Chapra 和 canale 的数值方法 and 数值数学 作者 chenny 和 kincaid 所以我的数据是 x 1
  • 需要在单引号xslt中分配属性值

    我们需要使用 xslt 转换从 xml 创建一个 html 我们需要生成的 html 锚标记为 a a
  • 将 UUID 与 EclipseLink 和 PostgreSQL 结合使用

    我想使用 PostgreSQL uuid 类型作为对象的主键 为此 我创建了一个转换器 实现 Converter 接口 下面是相关代码 Override public void initialize DatabaseMapping mapp
  • 如何替换一堆文件中的多行字符串

    bin sh old hello new world sed i s old new g grep old rl 前面的脚本仅适用于单行文本 我如何编写一个脚本可以替换 多行文本 old line1 line2 line3 new newt
  • 检测iframe内容是否加载成功

    我有一个包含 iframe 的小部件 用户可以配置此 iframe 的 url 但如果无法加载该 url 它不存在或用户无法访问互联网 则 iframe 应该故障转移到默认的离线页面 问题是 如何检测iframe是否可以加载 我尝试订阅 l
  • ValueError:发现样本数量不一致的数组 [6 1786]

    这是我的代码 from sklearn svm import SVC from sklearn grid search import GridSearchCV from sklearn cross validation import KFo
  • 具有许多请求的 Blazor Server 应用程序使网站不稳定

    我创建了 Blazor 服务器 Web 应用程序 并将其部署在 Azure 应用服务上 并在Network选项卡我看到很多请求https mywebsites0123 azurewebsites net blazor id 3OO T6L4
  • 编码 ui 测试完成后如何保持浏览器打开?

    我正在对 Web 应用程序使用 Visual Studio 2012 编码 UI 测试 我有一个登录应用程序的测试 该测试启动浏览器 找到登录对话框 输入凭据 然后单击 确定 我有一个断言 可以在登录后检查正确的网址 该测试似乎运行正常 我
  • 如何避免合并分布式表上的高基数子选择聚合

    在 Clickhouse 中 我有一个大表 A 其中包含以下列 date user id operator active 在表 A 中 事件已经根据日期 user id 和操作员进行了预先聚合 而 活动 列表示用户在给定日期存在某种类型的活
  • 如何在iPhone应用程序中通过代码获取用户的当前位置?

    我想从我的 iPhone 应用程序获取用户的当前位置 我想在我的应用程序中显示用户当前的位置 例如国家 地区名称 纬度 经度信息 我也想在谷歌地图上显示位置 我也尝试过谷歌搜索 但无法得到确切的答案 我已经得到了要使用的信息CLLocati
  • 将 B 样条曲线拟合到控制路径

    我意识到在 R 中使用 B 样条存在很多问题和答案 但我还没有找到这个 看似简单 问题的答案 给定一组描述控制路径的点 如何拟合 B 样条曲线并沿着曲线提取给定数量的点 例如 100 以进行绘图 问题是路径在 x 和 y 上都不是单调的 控