matlab拟合三维椭球

        同学问的,查了下资料。


%需要拟合的点的坐标为(0,-174.802,990.048),(0.472,-171.284,995.463),(0.413,-168.639,1003.55),(0.064,-167.862,1019.55),
%(0,-170.357,1035.44),(0,-172.142,1044.78),(0.215,-174.759,1047.84),(0.171,-176.586,1048.13),(0,-179.832,1043.34),(0,181.589,1040.11),(0,-182.76,1032.62),(0,-184.13,1017.55),(0.113,-183.445,1003.17)
function my_fit_new()
% 日期:2011年12月29日
% 作者:半人马alpha
% 适用于你说的情况
% 你的数据拟合结果是一个旋转双曲面(a,c均为虚数,即 a^2<0,c^2<0)
% 我按拟合出的参数给你把图画了一下,是旋转双曲面的一支

    % step0:生成拟合数据(例)
    x = [0,0,0,0,0,0,0,0.064,0.113,0.171,0.215,0.413,0.472]';
    y = [-174.802,-170.357,-172.142,-179.832,181.589,-182.760,-184.130,-167.862,-183.445,-176.586,-174.759,-168.639,-171.284]';
    z = [990.048,1035.44,1044.78,1043.34,1040.11,1032.62,1017.55,1019.55,1003.17,1048.13,1047.84,1003.55,995.463]';

    % step1:拟合,k表示系数,行向量

    % 待拟合方程:F = z^2 = (-c^2/a^2*x^2) + (c^2/a^2*2*x1*x) + (- c^2/b^2*y^2) +
    %                      (c^2/b^2*2*y1*y) + (2*z1*z) +
    %                      (-c^2/a^2*x1^2 - c^2/b^2*y1^2 - z1^2 + c^2)
    % x,y,z 均要先转化为列向量
    % k(1) = -c^2/a^2  由k值就可求出椭圆所有参数!!!
    % k(2) = c^2/a^2*2*x1
    % k(3) = - c^2/b^2
    % k(4) = c^2/b^2*2*y1
    % k(5) = 2*z1
    % k(6) = -c^2/a^2*x1^2 - c^2/b^2*y1^2 - z1^2 + c^2

    xdata = [x,y,z];
    ydata = z.^2;  %% 先把 z 值平方,再进行拟合
    k0 = ones(1,6);  %% k 的运行初值,不会影响最终结果

    F = @(k,xdata) k(1)*xdata(:,1).^2 + k(2)*xdata(:,1) + k(3)*xdata(:,2).^2 + k(4)*xdata(:,2) + k(5)*xdata(:,3) + k(6);
    [k,resnorm]=lsqcurvefit(F,k0,xdata,ydata);

% step2:椭圆参数求解
    x1 = -k(2)/k(1)/2;
    y1 = -k(4)/k(3)/2;
    z1 = k(5)/2;
    c = sqrt(z1^2 + k(6) - k(1)*x1^2 - k(3)*y1^2);
    a = c/sqrt(-k(1));
    b = c/sqrt(-k(3));

disp('x1:');
    disp(x1);
    disp('y1:');
    disp(y1);
    disp('z1:');
    disp(z1);
    disp('a轴:');
    disp(a);
    disp('b轴:');
    disp(b);
    disp('c轴:');
    disp(c);

end
时间: 2024-09-20 00:33:04

matlab拟合三维椭球的相关文章

测绘-高斯投影正算关于修改椭球参数的问题

问题描述 高斯投影正算关于修改椭球参数的问题 下面是高斯正算的代码,可以实现BL到54的转换,没有问题,我现在要实现BL到80的转换,我应该怎么改椭球参数呢? const double PI = Math.PI; //定义圆周率 const double rho = 206264.806247096355; /// <summary> /// 高斯正算 /// </summary> /// <param name=""B"">纬度

图像处理-MATLAB绘制三维图的轮廓提取问题

问题描述 MATLAB绘制三维图的轮廓提取问题 我用的是激光二维扫描器扫描微小元件.能采集大量X和Z的数值.Y值需要确定每次测量的位置才能确定,每次测量都能得到物件在这一天激光线的高度和宽度.然后进行MATLAB进行绘制.但是得到的图像轮廓不是特别明显.求问怎么样才能将figure显示的图像轮廓给提取出来呢?希望能够得到详细指点. 解决方案 用matlab绘制三维图

点云数据-matlab拟合出错,求大神

问题描述 matlab拟合出错,求大神 直接上代码 A=xlsread('E:matlabspaceyuanzhu','sheet2','a1261:c2521'); x=A(:,1); y=A(:,2); z=A(:,3); data=[x(:),y(:),z(:)]; f=@(p,data)(data(:,1)-p(1)).^2+(data(:,2)-p(2)).^2+(data(:,3)-p(3)).^2-p(4)^2; p=nlinfit(data,zeros(size(data,1),

怎么使用vtk将二维图片合成三维图片

问题描述 怎么使用vtk将二维图片合成三维图片 30C 我的毕业设计是做图片处理的 ,现在图片处理完了,老师说要将二维的图片合成三维的(之前的二维图片也是用matlab将三维图片分割来的)vtk工具没有用过,网上搜的教程也看不太懂 求会vtk的兄弟姐妹帮忙用vc代码写一下 顺便说说vc里面需要怎么配置 不胜感激!

MATLAB 数据分析方法(第2版)1.4 数组和矩阵运算

1.4 数组和矩阵运算   矩阵是MATLAB数据存储的基本单元,矩阵运算是MATLAB语言的核心,在MATLAB语言系统中几乎一切运算都是以对矩阵的操作为基础的.   1.4.1 数组的创建与运算   1.数组的创建   在MATLAB中,一般使用方括号(\[\]).逗号(,).空格.冒号(:).函数命令等方法来创建数组,具体方法见表1-8.       表1-8 数组的创建方法         命令 用途   x=\[a,b,c,d\] 创建包含指定元素的数组 x=first:last 创建

PostGIS 距离计算规范 - 投影 与 球 坐标系, geometry 与 geography 类型

标签 PostgreSQL , PostGIS , 球坐标 , 平面坐标 , 球面距离 , 平面距离 背景 PostGIS中有两种常用的空间类型geometry和geography,这两种数据类型有什么差异,应该如何选择? 对于GIS来说,首先是坐标系,有两种:一种是球坐标(地理坐标),另一种是平面坐标(投影坐标). 球坐标通常用于计算,平面坐标通常用于展示(也可以计算). 投影坐标是从球坐标投影后展开得来(用一个圆柱将地球包起来,把地球当成会发光的光源,投影后,将圆柱展开得到),投影的范围越大

c++-直线拟合,希望大神能指点

问题描述 直线拟合,希望大神能指点 -1.09 6.5 -1.03 6.9 -1 7.46 -1 8.06 -1 8.3 -1 9 -1.1 9.8 -1.7 10.4 1.07 6.6 0.277 7.06 1.9 7.4 2 7.89 2.23 8.62 2.33 9.35 2.31 10.23 0.26 11.17 本人正在准备用激光雷达扫描马路边缘,但是经过预处理之后,处理的跳变点如上所示,用过最小二乘法,做线性拟合,效果不太好,请教大神有没有好的方法去处理. 解决方案 可以用Matla

地理空间距离计算优化

http://tech.meituan.com/lucene-distance.html 1 地理空间距离计算面临的挑战 打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是"离我最近"或者"智能排序"(如下图所示). 不管是"离我最近"还是"智能排序",都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分).以筛选商家为例,北京地区有5~6w个POI(本文将商家称之为P

Levenberg–Marquardt算法学习

  本次是对Levenberg–Marquardt的学习总结,是为之后看懂sparse bundle ajdustment打基础.这篇笔记包含如下内容: 回顾高斯牛顿算法,引入LM算法 惩罚因子的计算(迭代步子的计算) 完整的算法流程及代码样例 1.      回顾高斯牛顿,引入LM算法  根据之前的博文:Gauss-Newton算法学习   假设我们研究如下形式的非线性最小二乘问题:   r(x)为某个问题的残差residual,是关于x的非线性函数.我们知道高斯牛顿法的迭代公式:   Lev