求达人指点:在Matlab软件下,进行最小二乘法曲线拟合

leejong 2007-05-13 11:13:13
以下是两组数据
  Y=(4.4608 4.4325 4.0201 4.0879 3.8341 3.8319 3.6696 3.8454 3.5923 3.785 3.6901 3.937 3.872 4.0277 3.9841 4.1637 4.2114 4.2856 4.3731 4.4021 4.4378 4.5266 4.5208 4.6075 4.6202 4.6588 4.6562 4.6648 4.7363 4.6963 4.7316 4.7043 4.804 4.8254 4.8482 4.7677 4.8736 4.833 4.9127)
  X=(0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.2 8 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78)
求会的达人们把这个程序写出来吧.
...全文
969 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
我也想了解,谢谢LZ.
fenglove599 2007-12-21
  • 打赏
  • 举报
回复
//最小二乘法直线拟合
BOOL CalculateLineKB(CFoldPointList *m_FoldList,double &k,double &b)
{
//最小二乘法直线拟合
//m_FoldList为关键点(x,y)的链表
//拟合直线方程(Y=kX+b)


if(m_FoldList==NULL)return FALSE;
long lCount=m_FoldList-> GetCount();
if(lCount <2)return FALSE;
CFoldPoint *pFold;
double mX,mY,mXX,mXY,n;
mX=mY=mXX=mXY=0;
n=lCount;
POSITION pos=m_FoldList-> GetHeadPosition();
while(pos != NULL)
{
pFold=m_FoldList-> GetNext(pos);
mX+=pFold-> X;
mY+=pFold-> Y;
mXX+=pFold-> X*pFold-> X;
mXY+=pFold-> X*pFold-> Y;
}
if(mX*mX-mXX*n==0)return FALSE;
k=(mY*mX-mXY*n)/(mX*mX-mXX*n);
b=(mY-mX*k)/n;
return TRUE;
}
gmdang 2007-05-25
  • 打赏
  • 举报
回复
if
gmdang 2007-05-14
  • 打赏
  • 举报
回复

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧