楼主: peijianshi
5398 7

[问答] R中,如何找到平面上两个距离最大的点及其距离大小 [推广有奖]

  • 0关注
  • 16粉丝

已卖:352份资源

副教授

80%

还不是VIP/贵宾

-

威望
0
论坛币
638 个
通用积分
2.3662
学术水平
12 点
热心指数
12 点
信用等级
5 点
经验
15373 点
帖子
636
精华
0
在线时间
568 小时
注册时间
2010-3-11
最后登录
2022-9-8

楼主
peijianshi 发表于 2014-6-12 11:15:40 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在R中,有若干个点,如何才能找到能够使两点间距离最大的那两个点呢?同时求出这个最大的距离。
谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:最大的 平面 如何 最大的

本帖被以下文库推荐

R万岁!

沙发
danica33 发表于 2014-6-12 16:09:06
假设有n个点,组成矩阵x,x为n*p(平面上点p=2),矩阵每行为一个点对应坐标,然后在R中运行
  1. dis<-dist(x)
  2. dis<-as.matrix(dis)
  3. dis[upper.tri(dis)]<-0
  4. which(dis==max(dis),arr.ind=T)
  5. ##上述which命令返回n个点两两距离矩阵所对应的行和咧,即距离最大两个点在x中的行数
复制代码

藤椅
peijianshi 发表于 2014-6-13 09:32:16
非常感谢!可行。呵呵,您真强!

板凳
peijianshi 发表于 2014-6-20 15:55:58
danica33 发表于 2014-6-12 16:09
假设有n个点,组成矩阵x,x为n*p(平面上点p=2),矩阵每行为一个点对应坐标,然后在R中运行
这个问题,我遇到的比较复杂。对于平面只有少量数据,您的方法是可行的。
但是如果平面上点数异常多,比如10000组,您的方法在时间上将是低效的。
有没有算法能否快速给出最远点两点?
比如卡壳算法行否?
而我的图形是个类似椭圆(当然也是凸的),不是凸多边形。
谢谢!

报纸
peijianshi 发表于 2014-6-20 16:34:37
peijianshi 发表于 2014-6-20 15:55
这个问题,我遇到的比较复杂。对于平面只有少量数据,您的方法是可行的。
但是如果平面上点数异常多,比 ...
问题真正解决啦!
哈哈,danica33的程序稍微做一点小改动就可以啦。
如果平面给出的点数太多,比如超过了1000,就是用sample函数从中只选择500个点,
这500个点就基本能代替上述超过1000个点,因为图形已经很密了(500点的作用)。
谢谢!

地板
peijianshi 发表于 2014-6-20 18:09:48
danica33 发表于 2014-6-12 16:09
假设有n个点,组成矩阵x,x为n*p(平面上点p=2),矩阵每行为一个点对应坐标,然后在R中运行
你的程序有点问题,我录入下边的数据,发现不行:

> xx
         x.arti    y.arti
[1,] -21.46328 -34.24134
[2,]  12.88955  51.26954
[3,] -20.63382 -35.06097
[4,]  18.63710 -39.98070
[5,] -12.71097  49.22731
[6,]  35.01764  29.23238
[7,]  23.01237  44.55882
[8,]  32.03444 -26.17645
[9,]  25.46328 -34.24134
[10,]  41.40120  10.69226
> dis <- dist(xx)
> dis
           1         2         3         4         5         6         7
2  92.153289                                                            
3   1.166098 92.610872                                                  
4  40.509024 91.431076 39.577890                                       
5  83.926265 25.681848 84.659814 94.555644                              
6  84.964746 31.229619 85.033641 71.125050 51.747632                    
7  90.485080 12.145175 90.798135 84.652669 36.027097 19.468602         
8  54.102202 79.777240 53.412361 19.236580 87.680538 55.489075 71.308317
9  46.926564 86.430378 46.104393  8.918352 91.783922 64.188777 78.838271
10 77.272059 49.592644 77.082432 55.551353 66.430991 19.608313 38.536909
           8         9
2                     
3                     
4                     
5                     
6                     
7                     
8                     
9  10.403009         
10 38.039946 47.676465
> dim(dis)
NULL
>

7
danica33 发表于 2014-6-23 09:51:47
peijianshi 发表于 2014-6-20 18:09
你的程序有点问题,我录入下边的数据,发现不行:

> xx
dist()得到的不是矩阵,需要先用as.matrix转换才能用dim()

8
galilee 在职认证  发表于 2014-6-23 10:22:31
嗯,建议多使用 class,names,str函数可以更好理解对象

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 12:50