用matlab怎么在三维坐标系中拟合球面公式!急急急!!!

各位大侠,知道三维坐标系内的一系列的点的坐标,也知道这些点的分布是一个球形,怎么用matlab把这个球形公式拟合出来?最好是有一段编号的程序,谢谢!... 各位大侠,知道三维坐标系内的一系列的点的坐标,也知道这些点的分布是一个球形,怎么用matlab把这个球形公式拟合出来?最好是有一段编号的程序,谢谢! 展开
lmlbdwk
2012-06-11 · 超过18用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:25.1万
展开全部
function [a,resnorm] = sphere_fit(a0,data)
% 对数据进行球拟合,a0 是初始的球心和半径
% data 是 x、y、z 的数据矩阵,第一行是 x,第二行是 y,第三行是 z
% a 是拟合后球的球心和半径,a(1) 是 x 坐标,a(2) 是 y 坐标,a(3) 是 z 坐标,a(4) 是半径
% by GoKu
zdata=data(3,:);
[a,resnorm] = lsqcurvefit(@sphere_fit_fun,a0,data,zdata);

function h=sphere_fit_fun(a,data)
% 传给主函数的子函数
xdata=data(1,:);
ydata=data(2,:);
zdata=data(3,:);

flagh(1:length(xdata))=0;
flagz(1:length(zdata))=0;

flagh(find(((xdata-a(1)).^2+(ydata-a(2)).^2)<a(4)^2))=1;
flagz(find(zdata>a(3)))=1;

to_h=flagh.*sqrt(abs(a(4)^2-(xdata-a(1)).^2-(ydata-a(2)).^2));
h=a(3)-to_h+2*flagz.*to_h;
% h 是数据点在球上对应的 z 坐标
end
费了好大劲才找到的程序代码,楼主加分啊,代码应该没问题,对程序的理解,你得自己捉摸了,因为这几天我也在研究这个问题,有几点我也没弄懂。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式