24小时热门版块排行榜    

查看: 1916  |  回复: 11

ww汪红

新虫 (小有名气)

[求助] F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4) 已有3人参与

F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)
这个公式是把离散点拟合成椭圆的一个公式。有哪位同学能给我讲一下这个公式是怎么来的,我不太理解。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guo_zy_123

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
这应该不是拟合椭圆的公式吧,

这是个匿名函数啊

matlab中的函数写法
可以有三种方法创建:

  (1)inline函数:
  f=inline('3*x+1','x')

  可以得到:f=
  Inline function :
  f(x)=3*x+1

  输入t=0:3;
  f(t)

  ans =
  1 4 7 10

  (2)匿名函数:
  f=@(x)3*x+1

  可以得到:f=
  @(x)3*x+1

  输入t=0:3;
  f(t)

  ans =
  1 4 7 10

  (3)创建M-函数
  新建m文件,输入:
  function f=equation(x)
  f=3*x+1;

  保存m文件到工作文件夹;

  调用:
  输入t=0:3;
  f=equation(t)

  ans =
  1 4 7 10

你这个属于第二种,是个匿名函数
输入p和x就能出对应函数值,不过x的格式是个椭圆

p 输入4个系数
x的第一列是当作X,x的第二列当作Y

方程就是 P1*X^2 + P2 *X*Y + P3*Y ^2 + P4

这个函数描述的是 这个东西
老古董
2楼2015-12-24 08:43:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guo_zy_123

木虫 (正式写手)

【答案】应助回帖

当然你认为是拟合椭圆也行

反正就是看F 和 0的大小关系呗,如果是这个椭圆上的点, F的值会很接近0

通过对这个式子,调整4个系数P,让F每一项都趋近于0 就接近 椭圆了
老古董
3楼2015-12-24 08:47:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

getengqing

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
2楼: Originally posted by guo_zy_123 at 2015-12-24 08:43:49
这应该不是拟合椭圆的公式吧,

这是个匿名函数啊

matlab中的函数写法
可以有三种方法创建:

  (1)inline函数:
  f=inline('3*x+1','x')

  可以得到:f=
  Inline function :
  f(x)=3 ...

那怎么和上述输入t一样输入呢?
一起交流学习/分享优秀资源
4楼2015-12-24 09:00:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
ww汪红: 金币+10, ★★★很有帮助 2015-12-26 15:58:34
这个方程:P1*X^2 + P2 *X*Y + P3*Y ^2 + P4=1
可以理解是一个中心点在原点的旋转椭圆
5楼2015-12-24 10:27:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guo_zy_123

木虫 (正式写手)

引用回帖:
4楼: Originally posted by getengqing at 2015-12-24 09:00:25
那怎么和上述输入t一样输入呢?...

按楼主的最早的描述方程

matlab输入应该是

%匿名函数
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4);
%输入椭圆系数
p = [p1,p2,p3,p4];%请将用实际的数代换p1等
%输入采集到的数据
X = [x11,x12; x21,x22;x31,x32.....];%用采集到的数据代换
%求解F
ans = F(p,X);
%此时求解的 ans是个列向量,每个元素是采集到的点与对应P中系数椭圆方程
%的偏差,这个ans单个元素都趋近与0时,这组系数p就是你要拟合的椭圆方程系数
老古董
6楼2015-12-24 10:27:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guo_zy_123

木虫 (正式写手)

楼主记得给金币!!要诚实
老古董
7楼2015-12-24 10:29:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guo_zy_123

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
xzhdty: 金币+10, 代楼主发放金币 2015-12-24 20:41:09
ww汪红: 金币+40, ★★★★★最佳答案 2015-12-26 15:58:23
%给你个更加详细椭圆函数的拟合
%复制到matlab运行
%记得给金币
%记得给金币
%记得给金币(重要的事情说三遍)
clear; clc; close all;
% 设出圆锥曲线方程
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6);
% 离散数据点
x=[1.7729 1.9228
   1.7338 1.9072
   2.0539 1.6137
   2.0656 1.6412
   1.8611 1.48765
   1.9005 1.4971
   2.0732 1.6546
   1.8338 1.9405
   1.9375 1.5104
   1.6878 1.5177
   1.7031 1.5097
   1.9577 1.5201
   1.9872 1.5437
   2.0341 1.5805
   2.0723 1.6546
   2.0681 1.8284
   2.0557 1.8483
   2.0491 1.5651
];
p0=[1 1 1 1 1 1];
warning off
% 拟合系数,最小二乘方法
p=nlinfit(x,zeros(size(x,1),1),F,p0);
plot(x(:,1),x(:,2),'ro');
hold on;
xmin=min(x(:,1));
xmax=max(x(:,1));
ymin=min(x(:,2));
ymax=max(x(:,2));
% 作图
ezplot(@(x,y)F(p,[x,y]),[-1+xmin,1+xmax,-1+ymin,1+ymax]);
title('曲线拟合');
legend('样本点','拟合曲线')
老古董
8楼2015-12-24 10:37:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ww汪红

新虫 (小有名气)

引用回帖:
8楼: Originally posted by guo_zy_123 at 2015-12-24 10:37:07
%给你个更加详细椭圆函数的拟合
%复制到matlab运行
%记得给金币
%记得给金币
%记得给金币(重要的事情说三遍)
clear; clc; close all;
% 设出圆锥曲线方程
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3 ...

F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4);
% 离散数据点
x=load('G:\Users\Daniel\Desktop\Total.txt');
p0=[1 1 1 1];
warning off
% 拟合系数,最小二乘方法
p=nlinfit(x,zeros(size(x,1),1),F,p0);
plot(x(:,1),x(:,2),'r.');
axis square;
hold on;
xmin=min(x(:,1));
xmax=max(x(:,1));
ymin=min(x(:,2));
ymax=max(x(:,2));
% 作图
ezplot(@(x,y)F(p,[x,y]),[-1+xmin,1+xmax,-1+ymin,1+ymax]);
title('曲线拟合');
legend('样本点','拟合曲线')
set(gca,'xtick',[-1:0.2:1]);
set(gca,'ytick',[-1:0.2:1]);
xlim([-1 1]);
ylim([-1 1]);
line([-1 1],[0 0]);
line([0 0],[-1 1]);

麻烦请问能不能设置拟合出来的椭圆长轴沿y方向,短轴沿x方向?
还有这个公式F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)

哪个代表长轴哪个代表短轴呀~?小白一个跪谢大神

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : Total.txt
  • 2015-12-26 15:52:15, 1.47 K
9楼2015-12-26 15:54:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guo_zy_123

木虫 (正式写手)

去掉交叉项就是xy在坐标轴上了,不过貌似拟合效果不好就是x*y那个项去掉,对应p也少系数就行了

发自小木虫IOS客户端
老古董
10楼2015-12-26 16:29:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ww汪红 的主题更新
信息提示
请填处理意见