24小时热门版块排行榜    

查看: 1918  |  回复: 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的回帖

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