声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5774|回复: 17

[绘图技巧] 如何求曲线上两点间的最大距离?

[复制链接]
发表于 2006-10-12 09:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

[ 本帖最后由 lxq 于 2006-10-12 11:32 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-10-12 10:32 | 显示全部楼层
不用循环就可以了

[ 本帖最后由 ChaChing 于 2010-8-15 21:23 编辑 ]
 楼主| 发表于 2006-10-12 10:44 | 显示全部楼层
不用循环应该怎么办呢?麻烦eight说的具体点!谢谢
发表于 2006-10-12 10:48 | 显示全部楼层
贴一下原始数据吧,我懒得自己弄

[ 本帖最后由 ChaChing 于 2010-8-15 21:24 编辑 ]
发表于 2006-10-12 12:29 | 显示全部楼层
你应该把你的问题说清楚啊。
发表于 2006-10-12 13:41 | 显示全部楼层
设两曲线的方程分别为:
y1=f(x1);
y2=f(x2);
其中x1∈[a,b],x2∈[c,d];
则两曲线之间最大距离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等函数求解

评分

1

查看全部评分

 楼主| 发表于 2006-10-12 17:39 | 显示全部楼层
原始数据是:
x=[0.004        0.008        0.012        0.016        0.02        0.024        0.028        0.032        0.036        0.04        0.044        0.048        0.052        0.056        0.06        0.064        0.068        0.072        0.076        0.08        0.084        0.088        0.092        0.096        0.1        0.104        0.108        0.112        0.116        0.12        0.124        0.128        0.132        0.136        0.14        0.144        0.148        0.152        0.156        0.16        0.164        0.168        0.172        0.176        0.18        0.184        0.188        0.192        0.196        0.2        0.204        0.208        0.212        0.216        0.22        0.224        0.228        0.232        0.236        0.24        0.244        0.248        0.252        0.256        0.26        0.264        0.268        0.272        0.276        0.28        0.284        0.288        0.292        0.296        0.3        0.304        0.308        0.312        0.316        0.32        0.324        0.328        0.332        0.336        0.34        0.344        0.348        0.352        0.356        0.36        0.364        0.368        0.372        0.376        0.38        0.384        0.388        0.392        0.396        0.4        0.404        0.408        0.412        0.416        0.42        0.424        0.428        0.432        0.436        0.44        0.444        0.448        0.452        0.456        0.46        0.464        0.468        0.472        0.476        0.48        0.484        0.488        0.492        0.496        0.5        0.504        0.508        0.512        0.516        0.52        0.524        0.528        0.532        0.536        0.54        0.544        0.548        0.552        0.556        0.56        0.564        0.568        0.572        0.576        0.58        0.584        0.588        0.592        0.596        0.6        0.604        0.608        0.612        0.616        0.62        0.624        0.628        0.632        0.636        0.64        0.644        0.648        0.652        0.656        0.66        0.664        0.668        0.672        0.676        0.68        0.684        0.688        0.692        0.696        0.7        0.704        0.708        0.712        0.716        0.72        0.724        0.728        0.732        0.736        0.74        0.744        0.748        0.752        0.756        0.76        0.764        0.768        0.772        0.776        0.78        0.784        0.788        0.792        0.796        0.8        0.804        0.808        0.812        0.816        0.82        0.824        0.828        0.832        0.836        0.84        0.844        0.848        0.852        0.856        0.86        0.864        0.868        0.872        0.876        0.88        0.884        0.888        0.892        0.896        0.9        0.904        0.908        0.912        0.916        0.92        0.924        0.928        0.932        0.936        0.94        0.944        0.948        0.952        0.956        0.96        0.964        0.968        0.972        0.976        0.98        0.984        0.988        0.992        0.996        1]

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
我想在这条曲线上求出两点间最大的距离。
发表于 2006-10-12 17:59 | 显示全部楼层
我想在这条曲线上求出两点间最大的距离--什么意思

[ 本帖最后由 ChaChing 于 2010-8-15 21:12 编辑 ]
发表于 2006-10-12 18:54 | 显示全部楼层
呵呵,是任意两点还是对x轴而言相邻的两点。
 楼主| 发表于 2006-10-13 10:51 | 显示全部楼层
是曲线中任意两点之间的最大距离。文献中叫做曲线的直径。
发表于 2006-10-13 14:12 | 显示全部楼层
已经解决了,感觉应当是准确答案...-_-|||

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

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

评分

2

查看全部评分

发表于 2006-10-13 15:53 | 显示全部楼层
能不能贴出来?
去仿真那还要注册,口黑
 楼主| 发表于 2006-10-13 16:03 | 显示全部楼层
非常感谢各位的帮忙,已经基本搞定!谢谢!
发表于 2006-10-13 20:08 | 显示全部楼层
原帖由 yqchenlolo 于 2006-10-13 15:53 发表
能不能贴出来?
去仿真那还要注册,口黑

那是个很好的论坛,注册一下,进去逛逛就知道了,里面有好多好帖
注册一下又花不了多少时间
发表于 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=[x,f]; 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个点
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-28 21:23 , Processed in 0.076202 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表