之间的最小距离给定的一组点和曲线

96(30天)
我有一个点集pnt(1:2, 81)和一个给定函数生成的样条曲线。
我需要得到最小距离(pnt集之间正常的L2距离)和曲线。
我有两个parameterts t和v。t = 0:0.01:1和v是一组11个参数。为每个t值我需要得到一个点在曲线上
最小距离与一个点fronm点集。
最后我需要使用fmincon布鲁里溃疡v值。(从分离m文件)
但我有问题构造目标函数以获得最小距离
请参阅以下目标函数代码湿草地有问题:
%的主要目标函数
函数[v d] = main_fun (t)%接受t输入,并返回v & d
(pnt地区]= generate_foils (202050030);
v = (0.5, 0.4, 0.18, 0.6, 0.05, 0.1, 0.3, 0.5, 1, 0.01, 0.1);
crv = airfoil_pmodel (v);
t = 0:0.01:1;
= 0;
b = 1;
d = distance_fun (t);
%循环寻找的距离
h = 0;
2 = 1:81
t = fminbnd (@distance_fun, a, b);% t是一个输出
h = h + d;%之间的距离曲线和pnt(:,我)。
结束
%距离计算的辅助功能
函数d = distance_fun (t)% t是一个输入
d = 0;
jj = 0;
d < 0.045
jj = jj + 1;
电脑= fnval (crv t);
jj d = (pnt (1) - pc (1, jj)) ^ 2;% + (pnt (2, jj) - pc (2, jj)) ^ 2;
结束
结束
结束

接受的答案

约翰D 'Errico
约翰D 'Errico 2022年3月3日
编辑:约翰D 'Errico 2022年3月3日
最简单的是使用我的代码distance2curve,发现在文件交换。它发现距离一般空间曲线,每一组点。它允许您假设曲线由一个分段线性近似建模,或几种形式的三次样条。
在这里找到免费下载:
请注意,如果你坚持自己编写代码,没有必要使用fminbnd,但是最简单的方法来解释的解决方案是仔细观察distance2curve代码本身。看到你可以制定最小距离问题的形式一个特定的多项式方程的根,但自从distance2curve为你做的,我强烈建议你允许它来做这个工作。避免编写自己的解决问题时已经存在现有的代码来解决你的问题。
2的评论
伊莱亚斯
伊莱亚斯 2022年3月4日
还一件事添加生成的曲线是一个给定的函数,而不是印度提供了所以我不能使用给出方程。

登录置评。

更多的答案(0)

类别

找到更多的在最小二乘帮助中心文件交换

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!