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^2xdata = [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
matlab拟合三维椭球的更多相关文章
- MATLAB的三维散点图
MATLAB中三维散点图函数为scatter3(x,y,z) 三维火柴图为stem3(x,y,z)
- Matlab绘制三维曲面(以二维高斯函数为例)
原文地址为:Matlab绘制三维曲面(以二维高斯函数为例) 寒假学习了一下Python下的NumPy和pymatlab,感觉不是很容易上手.来学校之后,决定继续看完数字图像处理一书.还是想按照上学期的 ...
- 计算直线与WGS84椭球的交点
/************************************************************************/ /*线段与WGS84椭球求交 x^2/a^2+y^ ...
- Matlab 沿三维任意方向切割CT图的仿真计算
一.数据来源 头部组织的数据.此处直接引用了matlab自带的mri数据.实际场景中,可以通过CT得到的数据进行转换得到 插入异物的数据.此处我假设插入异物为一根细铁丝.模拟为空间中的一条曲线.这个曲 ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- matlab绘制三维图形
原文地址:种三维曲面图. 程序如下: [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2, ...
- matlab 画三维图函数
matlab三维绘图 http://blog.sina.com.cn/s/blog_6d5ffd0d0100lyah.html Matlab绘图系列之高级绘图 http://blog.163.com/ ...
- Matlab将三维变量分割为多个二维变量的方法
最近在处理 Matlab 中的三维矩阵的时候,遇到了一个问题: 假如m 为 5*5*5的矩阵,如果以第三个维度为基础,分割为5个不同的矩阵 m1,m2,m3,m4,应该如何解决? 解决方法:eval函 ...
- Cesium 鼠标拾取椭球、地形、模型坐标点(经度+纬度+高程)
首先,Cesium 中的坐标可分为两种情况:二维和三维,三维又有地形和模型之分: 1.二维坐标,获取椭球体表面的经纬度坐标: var handler = new Cesium.ScreenSpaceE ...
随机推荐
- Android开发优化之——对Bitmap的内存优化
http://blog.csdn.net/arui319/article/details/7953690 在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitm ...
- 导入一个AndroidStudio工程作为一个Library Module
尊重劳动成果,转载请注明出处:http://blog.csdn.net/growth58/article/details/47441245 关注新浪微博:@于卫国 邮箱:yuweiguocn@gmai ...
- List<T>实体去重分组:
实体去重分组: //实体类 public class Province { public string id { get; set; } public string name { get; set; ...
- Makefile详解--隐含规则
Makefile详解--隐含规则(转) Makefile系列文章,这里有个前辈连续洗了一个系列来介绍,共有26篇博客文章. http://www.cppblog.com/ivenher/archive ...
- TCP/IP 编程
http://www.cnblogs.com/ggjucheng/archive/2012/08/18/2645324.html
- Linux下查看系统配置
CPU 1. lscpu:显示cpu架构信息 [xxx@localhost ~]$ lscpu Architecture: x86_64 CPU op-mode(s): -bit, -bit Byte ...
- Android开发之TextView的下划线添加
如何给TextView添加下划线呢,最近项目中需要这个,于是就用代码添加了下划线功能.主要就是用Paint的setFlags方法来实现,具体如下: ((TextView)mScrollView.fin ...
- 关于Android NDK
把解压后的ndk放在自己想放的位置 环境变量:ndk根目录添加到PATH=$PATH:<ndk-root-path> 使用NDK:在自己工作目录(可以是随意位置)下创建<Test&g ...
- CentOS7上GitHub/GitLab多帐号管理SSH Key
由于公司团队使用 GitLab 来托管代码,同时,个人在 Github 上还有一些代码仓库,可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不同的,这就造成了冲突 ,文章提供此类问题的解 ...
- php并发处理
最近某个项目用php生成文件,但是由于文件量太大,单个进程生成需要很长的时间,所以想并发进行处理. 网上查找了下相关的资料,php本身是没有多线程的概念的,那就只能用多进程了,再找资料却是 ...