声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2780|回复: 4

[编程技巧] 请教非线性拟合曲线过程中遇到的问题

[复制链接]
发表于 2007-7-13 08:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
以下是我的程序:
xdata=[1,2,3,4,5];
ydata=[6,7,8,9,10];
fun=inline('n(1).*((xdata-4.391e11)./1.2843e12.*2+n(2)).^2/(1+((xdata-4.391e11)./...
1.2843e12.*2).^2)','n','xdata')
n=lsqcurvefit(fun,[1,1],xdata,ydata)

运行后的错误报告如下:
Error using ==> c:/matlab6p5/toolbox/optim/private/lsqncommon
Function value and YDATA sizes are incommensurate.

Error in ==> C:\MATLAB6p5\toolbox\optim\lsqcurvefit.m
On line 129  ==> [x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

Error in ==> D:\luxc\work\matlab\fano model\trial2.m
On line 5  ==> n=lsqcurvefit(fun,[1,1],xdata,ydata)

好象是说我的ydata的数组大小和function的不一致.可是我换用一个简单的函数:
        n(1).*10+xdata.*n(2)来拟合,程序就可以正常运行,难道是所需拟合的函数的问题?

谢谢.
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-7-13 10:41 | 显示全部楼层
我将lsqcurvefit函数用lsqnonlin函数替换后就可以计算了,这两个命令有什么区别呢?
发表于 2007-7-13 13:39 | 显示全部楼层


一个是最小二乘曲线拟合,一个是最小二乘非线性方程组求解,具体自己 help 一下就可以了

评分

1

查看全部评分

 楼主| 发表于 2007-7-13 22:25 | 显示全部楼层
非常感谢!
 楼主| 发表于 2007-7-14 03:48 | 显示全部楼层
我将原式中几个设定的参数改为需要拟合的自由量参数,用lsqcurvefit就可以正常拟合了.谢谢!:@)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-4 20:27 , Processed in 0.067651 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表