24小时热门版块排行榜    

查看: 1920  |  回复: 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

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
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的回帖
查看全部 12 个回答

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的回帖
信息提示
请填处理意见