
设定多种曲面类型,选定各离散点到曲面距离的平方的和最小的那种曲面类型。
你的问题可以这样来解决。1、根据你的数据x、y、z,先通过matlab的拟合函数,拟合出z(x,y)的表达式,再用meshgrid函数进行网格化,最后用mesh函数绘出其三维曲面图。
2、主要代码书写格式
%求拟合系数
x=[。。。]y=[。。。] z=[。。。]
X=[x y]Y=z
func=@(a,x) a(1).*x(:,1).^2+ a(2).*x(:,2).^2 %表达式为假定的
a0=[。。。] %拟合系数的初值
a= nlinfit(X,Y,func,a0) %求 拟合系数
%绘制曲面图
x=x0:(xn-x0)/n:xn %x0最小值,xn最大值,即x的范围
y=y0:(yn-y0)/n:yn %y0最小值,yn最大值,即y的范围
[X,Y]=meshgrid(x,y) %网格化
Z=a(1).*X.^2+ a(2).*Y.^2 %计算Z值
mesh([X,Y,Z) %三维曲面图
这个可不是一般的问题,曲面可以非常复杂,曲线可以不是平面,可以是凸型,或凹形。如果要求两点间最短的距离,需要运用数学的方法进行求解。
这个题目解出的前提一定是曲面已知,然后,两点坐标已知。求min
distance(x,y)。
其实这是一个典型的优化的问题,这个问题在很多文献里都有研究,叫最小距离优化。
可以转化成离散的问题,
可以定义n个点都在曲线上。
我们有限制条件,这n个点在曲线上,目标函数就是
x,
y之间的距离。
我们希望在曲线上找到这n个点使得,x,y
与这n个点之间的距离的和(也就是x,y之间距离)最短。
这种方法只是离散的,将x,y之间的曲线截成了n段,求和找最短距离。如果n选择的合适,我认为结果是可以接受的。
这只是一种方法,你也可以看看其他文献,选择你觉得好的算法。这也算是抛砖引玉吧。希望解决了你的疑惑,谢谢。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)