24小时热门版块排行榜    

查看: 1102  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

powterlam

铁虫 (小有名气)

[求助] matlab编程求助!

已知(x,y,z)一系列数据点,要求拟合出一个球形。

111.png
回复此楼
I love the journey, I hate the journey too
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

powterlam

铁虫 (小有名气)

要求你和后知道球形的半径以及球心坐标。
I love the journey, I hate the journey too
3楼2012-09-14 15:19:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

powterlam

铁虫 (小有名气)

只要拟合图中倒三角形的数据点。
I love the journey, I hate the journey too
2楼2012-09-14 15:05:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
看此例
CODE:
[x1,x2,x3]=sphere;   %构建一个圆心在原点的单位球
x1=reshape(x1,1,[]); %将矩阵坐标转换成向量
x2=reshape(x2,1,[]);
x3=reshape(x3,1,[]);
xdata=[x1;x2;x3];   %xdata的每一列就是一个点的xyz
ydata=zeros(1,length(x1));%构建一个相同点数的0向量
p0=[0.1,0.1,0.2,1];   %初值点的圆心坐标和半径
fun=@(p,xdata)(xdata(1,:)-p(1)).^2+(xdata(2,:)-p(2)).^2+(xdata(3,:)-p(3)).^2-p(3)^2    %拟合函数为距离平方与半径平方差
p=lsqcurvefit(fun,p0,xdata,ydata)    %拟合

结果为:
p =

   -0.0192    0.0000   -0.0000    1.0000表明拟合出来的球心在(-0.0192,0,0),半径为1与初始基本一致
showmethemoney
4楼2012-09-14 15:25:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

有点错,fun函数最后那个应该是p(4)^2,拟合结果为
p =

   -0.0000    0.0000   -0.0000    1.0000
与初始一致。
showmethemoney
5楼2012-09-14 15:26:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见