将 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 样条曲线拟合到控制路径 的相关文章

随机推荐

  • 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 上都不是单调的 控