如何使用 R 找到最适合的圆/椭圆?

2024-02-12

我一直在阅读一些将圆适合数据的方法(例如this http://www.cs.bsu.edu/homepages/kerryj/kjones/circles.pdf)。我想看看这些方法如何在真实数据上发挥作用,并考虑使用 R 来实现这一点。我尝试在 rseek 中搜索可以帮助解决此问题的软件包,但没有找到任何有用的结果。

那么,是否有软件包可以帮助轻松计算给定数据集的最佳拟合圆(类似于如何lm()将线性模型拟合到数据集)?否则,如何在 R 中执行这样的任务?


下面是一个相当简单的函数实现,可以最小化该论文中的 SS(a,b,r):

fitSS <- function(xy,
                  a0=mean(xy[,1]),
                  b0=mean(xy[,2]),
                  r0 = mean(sqrt((xy[,1]-a0)^2 + (xy[,2]-b0)^2)),
                  ...){
    SS <- function(abr){
        sum((abr[3] - sqrt((xy[,1]-abr[1])^2 + (xy[,2]-abr[2])^2))^2)
    }
    optim(c(a0,b0,r0), SS, ...)
}

我编写了几个支持函数来生成圆上的随机数据并绘制圆。因此:

> xy = sim_circles(10)
> f = fitSS(xy)

The fit$parvalue 是 xcenter、ycenter、radius 的向量。

> plot(xy,asp=1,xlim=c(-2,2),ylim=c(-2,2))
> lines(circlexy(f$par))

请注意,它不使用梯度,也不检查收敛错误代码。您可以为其提供初始值,或者它可以进行猜测。

绘制和生成圆的代码如下:

circlexy <- function(xyr, n=180){
    theta = seq(0,2*pi,len=n)
    cbind(xyr[1] + xyr[3]*cos(theta),
          xyr[2] + xyr[3]*sin(theta)
          )
}
sim_circles <- function(n,x=0,y=0,r=1,sd=0.05){
    theta = runif(n, 0, 2*pi)
    r = r + rnorm(n, mean=0, sd=sd)
    cbind(x + r*cos(theta),
          y + r*sin(theta)
      )
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 R 找到最适合的圆/椭圆? 的相关文章

  • R:根据元素长度从向量中删除元素

    如何根据字符串的字符数或长度从字符串向量中删除元素 df lt c asdf fweafewwf af aewfawefwef awefWEfawefawef gt df 1 asdf fweafewwf af aewfawefwef aw
  • 如何从R中的日期中提取月份

    我正在使用lubridate封装并应用month从日期中提取月份的函数 我在日期字段上运行了 str 命令 得到了 Factor w 9498 levels 01 01 1979 01 01 1980 5305 1 1 1 1 1 1 1
  • 访问 R 工作区中的数据[重复]

    这个问题在这里已经有答案了 我是自学 R 的 可能有一些非常基本的东西我可能不熟悉 如果是这样我道歉 我正在尝试访问外部来源提供给我的数据 它作为一个工作空间出现 我的流程如下 gt ls 1 2003OHT HR gt attach 20
  • 如何使用 sprintf 函数在字符中添加前导“0”而不是空格?

    我正在尝试使用sprintf函数为字符添加前导 0 并使所有字符长度相同 然而我得到的是领先空间 My code a lt c 12 123 1234 sprintf 04s a 1 12 123 1234 我试图得到什么 1 0012 0
  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 如何有效地将多个光栅 (.tif) 文件导入 R

    我是 R 新手 尤其是在空间数据方面 我正在尝试找到一种方法来有效地将多个 600 单波段栅格 tif 文件导入到 R 中 所有文件都存储在同一文件夹中 不确定这是否重要 但请注意 在我的 Mac 和 Windows 并行 VM 上的文件夹
  • 如何使用autoconf重新生成配置文件?

    我使用 autoconf 重新生成配置文件 它有效 但是当我执行生成的配置文件时 configure 有一些错误消息 例如 configure line 3713 syntax error near unexpected token bla
  • 如何在基数 R 中进行分组

    我想使用以下 SQL 查询来表达base R 没有任何特定的包 select month day count as count avg dep delay as avg delay from flights group by month d
  • 根据 R 数据框中的名称对列进行平均

    我想知道是否有一种有效的方法来获取每组的平均值类似命名的列谁的名字结尾为 1S and 2S ex ex1S ex2S at time 1并取每组的平均值类似命名的列谁的名字结尾为 1C or 2C ex ex1C ex2C at time
  • RStudio 不会通过 rPython 调用加载所有 Python 模块

    我从 Bash 和 RStudio 中运行相同的脚本时出现一些意外行为 请考虑以下事项 我有一个文件夹 rpython 包含两个脚本 test1 R library rPython setwd rpython python load tes
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 如何从数据框中删除少于 5 个观察值的个体 [重复]

    这个问题在这里已经有答案了 为了澄清这个问题 我将简要描述数据 中的每一行data frame是一个观察值 列代表与该观察值相关的变量 包括 观察到什么个体 观察时间 观察地点等 我想排除 过滤观察值少于 5 个的个体 换句话说 如果 in
  • 通过 Shiny 中的串扰将 Plotly 与 DT 结合使用

    我正在编写一个应用程序来将 csv 文件读取为闪亮的并将散点图与 DT 表链接起来 我几乎遵循了 Plotly 网站上 DT 数据表上的示例 https plot ly r datatable https plot ly r datatab
  • R Leaflet Legend:colorBin-删除中断之间的小数

    我正在使用 Leaflet 库在 R 中创建交互式 HTML 地图 传说中采用的是colorBin用于创建将数据分为 6 个类别的方法 使用min values and max values 我已经定义了美国社区调查收入数据的特定范围可能落
  • 如何返回包含最大值标签的向量

    我有一个 4 列数组 我想获得一个向量 其中每行包含包含该行最大值的列的标签 我可以在循环中执行此操作 但我想使用矩阵函数来提高速度 我怎样才能在不编写自己的库函数的情况下做到这一点 有一个函数可以做到这一点 如果x是你的矩阵 尝试max
  • 如何绘制每条线之间具有特定距离的图形

    实际上 我尝试绘制一个图形 但它将所有列 线 放在一起并显示 因此它不具有代表性 我尝试制作模拟数据并向您展示我如何绘制它 并向您展示我想要的内容 我不知道如何制作像下面所示的示例的数据 但我在这里做了什么 set seed 1 M lt
  • R 编程常用工具

    如果已经以不同的方式问过这个问题 我深表歉意 但我找不到任何达到我想要的东西 我真的是从其他软件包 SPSS 开始接触 R 的 当我了解真正可以做什么时 我意识到我还需要其他 工具 这让我想到了我的问题 您有哪些用于开发 R 代码的设置 我
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 合并数据框而不重复行

    我想合并两个数据框 但如果有多个匹配项 则不想重复行 相反 我想总结一下那天的观察结果 来自 合并 提取两个数据框中与指定列匹配的行并将其连接在一起 如果有多个匹配项 则所有可能的匹配项各贡献一行 这是一些示例代码 days lt as d
  • RStudio 如何确定控制台宽度,为什么它似乎总是出错?

    我刚刚发现wid lt options width在 RStudio 中 它似乎是我日常控制台使用中令人烦恼的根源 或者更确切地说 更接近根源 我应该先说一下 我目前使用的是 R 3 2 2 RStudio 0 99 491 Linux M

随机推荐

  • 无法更新生产服务器上的 gem

    无法更新生产服务器上的 gem 我试过了bundle install deployment and bundle install without development test 但继续得到 You are trying to instal
  • 如果使用 CGPointEqualToPoint 不起作用

    我试图找出为什么当球位置与块位置完全相同并且锚点相同时该函数不执行 GameEnd 函数 if CGPointEqualToPoint ball position block position if CGPointEqualToPoint
  • 如何在socket.io中删除房间

    我想静态地从房间中删除所有用户 从而有效地删除该房间 这个想法是 将来可能会再次创建另一个同名的房间 但我希望它创建为空 没有前一个房间的听众 我对自己管理房间状态不感兴趣 而是很好奇 好像我可以利用 socket io 内部结构来做到这一
  • 在 iPhone 上创建弹出窗口?

    我想在 iPhone 上创建一个自定义样式的弹出框 我希望它有一个向上的箭头 关于如何实现这一目标有什么想法吗 尝试这个FP 弹出窗口 https github com 50pixels FPPopover它会对你有所帮助
  • 如何使用rails控制台进行调试并放入应用程序

    我想在通过 Rails 控制台打开的 irb 中打印一些行 我见过很多关于如何实现它的问题 但我在 irb 中什么也没得到 下面是代码 def show puts in show method post Feed find by id pa
  • 如何同时使用 CGAffineTransformMakeScale 和 Rotation?

    UIImageView dsry objectAtIndex 0 transform CGAffineTransformMakeRotation 1 57 2 UIImageView dsry objectAtIndex 0 transfo
  • 最喜欢的内容未在 webview 上正确显示

    我正在开发一个语言词典应用程序 我将最喜欢的单词保存到首选项中 XML 文件中的收藏夹内容如下所示
  • 伪代码的标准? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要将一些 python 和 java 例程翻译成我的硕士论文的伪代码 但在想出语法 风格时遇到了困难 持续的 容易明白 不太详细 不太接近自
  • 嵌入随机命名的 MP3

    这是我的代码 我希望 mp3 的 src 考虑到存在许多随机命名的 mp3 文件 sound 目录 并在每次打开页面时随机选择一个 有什么线索给我吗 我的服务器启用了 PHP 但我想让它尽可能简单 这应该可以做到 files glob pa
  • Android 通知上的表情符号

    我正在尝试在通知栏上显示表情符号 这是我的字符串 ue057 getString R string notification sent hey 我已经尝试过使用 Softbank 以及每种可能的格式 U 1F601 xF0 x9F x98
  • 在 Windows 上的 VSCode 中调试 Python C/C++ 扩展

    问题总结 我正在为 Python 开发一个自 C 扩展 以提高特定代码段的性能 我想调试这个扩展 但到目前为止还没有成功 我关注了几个链接 例如这是纳迪亚的 https nadiah org 2020 03 01 example debug
  • sklearn 维度问题“发现数组具有暗淡 3。预计估计器 <= 2”

    我正在尝试使用 KNN 将 wav 文件正确分类为两组 组 0 和组 1 我提取了数据 创建了模型 拟合了模型 但是当我尝试使用 predict 方法时 出现以下错误 Traceback most recent call last File
  • MAMP 与 Laravel Unix Socket

    我正在我的 laravel 应用程序的本地开发服务器上使用 MAMP 我试图弄清楚如何安全地设置我的服务器 这样我就不必在数据库连接 mysql 数组中使用以下内容 因为那应该只当我在我的开发服务器上时使用 当我将行添加到 mysql 数组
  • git merge 在cherry-pick之后如何工作?

    让我们想象一下我们有一个master branch 然后我们创建一个newbranch git checkout b newbranch 并做出两个新的承诺newbranch commit1 and commit2 然后我们切换到maste
  • GCC 中 -O0 和 -O1 的区别

    在编译一些代码时 我注意到 O0 和 O1 之间创建的汇编器存在很大差异 我想运行启用 禁用优化 直到找出导致汇编器发生某种变化的原因 如果我使用 fverbose asm 准确找出 O1 与 O0 相比启用了哪些标志 然后手动禁用它们 为
  • 如何删除输入日期的 x 和向上/向下箭头元素?

    我唯一需要在框中显示的是橙色三角形 并且我不确定是否需要 CSS 或其他内容来删除三角形左侧的两个元素 有办法这样做吗 我只是使用输入类型date Fiddle http jsfiddle net 5M2PD 1 http jsfiddle
  • 队列性能明智哪个是更好的实现 - 数组或链表

    当我必须插入很少的元素时 哪种方式可以更快地入队和出队 数组比链表更好吗 我需要插入一些元素 并且必须从队列中删除并读取该删除的元素 如果它是数组 每次删除元素时我可能都必须修改索引 插入和删除也可能同时发生 从下面的案例来看 哪一个更好呢
  • 有什么理由避免 return 语句

    有时我会看到大段的 Scala 代码 其中包含多个嵌套级别的条件和匹配 使用显式 return 退出函数会更加清晰 避免那些显式的 return 语句有什么好处吗 A return may be通过抛出异常来实现 所以它may have与声
  • 我需要帮助设置 .NET HttpWebRequest 超时

    我的目标是在最短的时间内从多达 6000 个 URL 中获得答案 它运行得非常好 5200 个 LAN 地址需要 12 秒 直到开始出现一些延迟 我的代码最多同时使用 20 个 HttpWebRequest BeginGetResponse
  • 如何使用 R 找到最适合的圆/椭圆?

    我一直在阅读一些将圆适合数据的方法 例如this http www cs bsu edu homepages kerryj kjones circles pdf 我想看看这些方法如何在真实数据上发挥作用 并考虑使用 R 来实现这一点 我尝试