wanra 发表于 2006-10-12 09:59

如何求曲线上两点间的最大距离?

我用循环语句计算每两个点之间的距离,然后取出最大值,可是由于数据量大,循环起来很慢,有没有什么方法,能简便快速的求出呢?谢谢指导。

[ 本帖最后由 lxq 于 2006-10-12 11:32 编辑 ]

eight 发表于 2006-10-12 10:32

不用循环就可以了

[ 本帖最后由 ChaChing 于 2010-8-15 21:23 编辑 ]

wanra 发表于 2006-10-12 10:44

不用循环应该怎么办呢?麻烦eight说的具体点!谢谢

eight 发表于 2006-10-12 10:48

贴一下原始数据吧,我懒得自己弄

[ 本帖最后由 ChaChing 于 2010-8-15 21:24 编辑 ]

hunter_009 发表于 2006-10-12 12:29

你应该把你的问题说清楚啊。

笑石头 发表于 2006-10-12 13:41

设两曲线的方程分别为:
y1=f(x1);
y2=f(x2);
其中x1∈,x2∈;
则两曲线之间最大距离y可表示为:
y=sqrt((x(1)-x(2))^2+((y(1)-x(y))^2)
则求y最大值问题有以上式可转化为
min-sqrt((x(1)-x(2))^2+((y(1)-x(y))^2)
a≤x(1)≤b;
c≤x(2)≤d;
的优化问题;
可采用fminbnd,fmincon等函数求解

wanra 发表于 2006-10-12 17:39

原始数据是:
x=

y=[-8.8471        -8.7307        -9.7784        -8.6143        -11.175        -9.8948        -10.477        -10.477        -9.5456        -8.8471        -9.7784        -8.0322        -9.3127        -9.7784        -10.244        -10.244        -9.0799        -9.7784        -9.3127        -8.4979        -9.3127        -9.662        -9.4292        -8.8471        -9.0799        -8.4979        -8.8471        -6.7517        -8.6143        -7.9158        -8.1487        -8.1487        -7.2174        -7.683        -9.0799        -8.1487        -8.0322        -7.9158        -8.3815        -7.9158        -9.3127        -8.3815        -8.4979        -8.8471        -9.7784        -10.011        -10.011        -10.244        -10.244        -10.477        -10.826        -9.3127        -9.3127        -9.0799        -9.7784        -9.7784        -8.0322        -8.8471        -9.7784        -10.244        -9.7784        -10.477        -10.477        -9.3127        -9.3127        -9.8948        -10.244        -9.3127        -8.3815        -8.7307        -7.683        -7.4502        -8.3815        -8.8471        -10.011        -9.0799        -9.5456        -8.9635        -8.8471        -8.3815        -9.3127        -9.0799        -10.244        -10.71        -11.175        -9.3127        -9.7784        -9.5456        -9.8948        -10.71        -8.8471        -8.3815        -8.6143        -9.3127        -8.6143        -8.2651        -8.3815        -8.3815        -9.4292        -8.8471        -8.1487        -8.3815        -8.3815        -7.4502        -7.683        -7.4502        -7.9158        -9.5456        -9.7784        -10.71        -10.128        -10.477        -9.3127        -8.6143        -9.7784        -8.8471        -9.7784        -8.1487        -10.71        -12.223        -11.641        -12.223        -11.175        -11.292        -10.71        -10.244        -10.244        -9.7784        -9.3127        -9.8948        -8.3815        -9.0799        -9.3127        -7.9158        -8.6143        -7.4502        -7.4502        -8.0322        -9.7784        -8.1487        -8.6143        -9.5456        -9.5456        -11.175        -10.71        -11.874        -10.244        -10.244        -11.175        -11.175        -11.175        -10.71        -10.477        -12.107        -11.292        -10.244        -10.36        -9.3127        -7.9158        -8.8471        -8.6143        -9.8948        -11.175        -10.71        -9.7784        -8.4979        -9.0799        -9.4292        -9.3127        -9.0799        -8.1487        -7.9158        -8.3815        -8.3815        -9.3127        -8.2651        -8.1487        -8.7307        -10.244        -10.244        -10.011        -10.244        -9.5456        -10.71        -10.011        -9.7784        -9.5456        -10.244        -8.4979        -8.6143        -8.6143        -8.8471        -9.662        -8.8471        -10.011        -10.593        -10.244        -9.3127        -10.71        -8.8471        -10.011        -9.7784        -9.5456        -9.5456        -9.5456        -9.8948        -10.477        -10.71        -10.244        -10.011        -10.244        -10.36        -10.244        -10.71        -9.3127        -7.683        -8.6143        -10.011        -10.477        -11.175        -10.477        -10.011        -8.7307        -8.3815        -9.3127        -9.3127        -9.3127        -9.3127        -8.3815        -8.0322        -8.8471        -8.7307        -10.011        -11.641        -12.107        -11.175        -10.942        -10.244        -10.71        -11.175        -9.5456        -9.3127        -10.36        -9.5456        -8.3815        -8.3815        -9.0799        -9.3127        -8.6143        -9.0799
]
这是我根据数据拟和出的曲线的方程:
121.0907 x^6 - 289.6766 x^5 + 211.7924 x^4 - 17.0045 x^3 - 36.1942 x^2   + 10.4089 x - 9.7191
我想在这条曲线上求出两点间最大的距离。

eight 发表于 2006-10-12 17:59

我想在这条曲线上求出两点间最大的距离--什么意思

[ 本帖最后由 ChaChing 于 2010-8-15 21:12 编辑 ]

toes 发表于 2006-10-12 18:54

呵呵,是任意两点还是对x轴而言相邻的两点。

wanra 发表于 2006-10-13 10:51

是曲线中任意两点之间的最大距离。文献中叫做曲线的直径。

bainhome 发表于 2006-10-13 14:12

已经解决了,感觉应当是准确答案...-_-|||

===================================
如何求曲线上两点间的最大距离?
===================================

[ 本帖最后由 bainhome 于 2006-10-14 14:57 编辑 ]

yqchenlolo 发表于 2006-10-13 15:53

能不能贴出来?
去仿真那还要注册,口黑

wanra 发表于 2006-10-13 16:03

非常感谢各位的帮忙,已经基本搞定!谢谢!

jimin 发表于 2006-10-13 20:08

原帖由 yqchenlolo 于 2006-10-13 15:53 发表
能不能贴出来?
去仿真那还要注册,口黑
那是个很好的论坛,注册一下,进去逛逛就知道了,里面有好多好帖
注册一下又花不了多少时间

toes 发表于 2006-10-14 14:47

还是贴一下,以后可以参考,呵呵。

function DistanceForTwoPoint
clc; x=[.004:.004:1]';
f=121.0907*x.^6-289.6766*x.^5+211.7924*x.^4-17.0045*x.^3-36.1942*x.^2+10.4089*x-9.7191;
X=; A=max(pdist(X));
P=nchoosek(1:length(x),2);
Ind=find(pdist(X)==A);
P1=P(Ind,:);
disp(['两点之间最大距离为Dist=',num2str(A)])
disp(['这两个点分别是第',num2str(P1(1)),'个点和第',num2str(P1(2)),'个点'])
=================================================
运行程序得到如下结果:

两点之间最大距离为Dist=1.1468
这两个点分别是第36个点和第228个点
页: [1] 2
查看完整版本: 如何求曲线上两点间的最大距离?