声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1392|回复: 5

[编程技巧] 求助各位仁兄!怎么样用lsqcurverfit进行分段函数的参数求解!

[复制链接]
发表于 2006-8-29 10:07 | 显示全部楼层 |阅读模式

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

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

x
有一个函数,其函数曲线的模式是一个迟滞曲线,即分成来回两端。怎么样能进行整体的参数优化。而不是分成两端。
大概程序如下:
主函数:global xs;
global ffs;
data=xlsread('D:\wjt\资料\其他\nsxyhjffzq');
xdata=data(:,1);
ydata=data(:,2);
[xs2,loc]=min(xdata);
xdata=[xdata' loc xs2 ydata(1) ydata(loc)]';
x0=[3000,5];
[x,resnorm]=lsqcurvefit(@fun_he,x0,xdata,ydata)

调用函数:
ffs=xdata(end-1);
xs=xdata(1);
loc=xdata(end-3);
xdata=xdata(1:loc);
F=ffs+(xdata-xs)./(x(1)*(1+ffs/x(1))-(xdata-xs))*(x(2)+ffs);


ffs=xdata(end);
xs=xdata(end-2);
xdata=xdata(loc:2*loc-1);
F=ffs+(xdata-xs)./(x(1)*(1-ffs/x(1))+(xdata-xs))*(x(2)-ffs);

出现问题:
??? Error using ==> D:\matlab6.1\toolbox\optim\private\lsqncommon
User supplied function failed with the following error:

Index exceeds matrix dimensions.

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

Error in ==> D:\matlab6.1\work\ffzq\friction_para.m
On line 20  ==> [x,resnorm]=lsqcurvefit(@fun_he,x0,xdata,ydata)

本人认为在分段后,[x,resnorm]=lsqcurvefit(@fun_he,x0,xdata,ydata)这个命令中的xdata,ydata不再对应!
多谢帮助!!
回复
分享到:

使用道具 举报

发表于 2006-8-29 12:14 | 显示全部楼层
没太看懂你的程序

  1. 调用函数:
  2. ffs=xdata(end-1);
  3. xs=xdata(1);
  4. loc=xdata(end-3);
  5. xdata=xdata(1:loc);
  6. F=ffs+(xdata-xs)./(x(1)*(1+ffs/x(1))-(xdata-xs))*(x(2)+ffs);


  7. ffs=xdata(end);
  8. xs=xdata(end-2);
  9. xdata=xdata(loc:2*loc-1);
  10. F=ffs+(xdata-xs)./(x(1)*(1-ffs/x(1))+(xdata-xs))*(x(2)-ffs);
复制代码



这一段是什么?不像是函数
 楼主| 发表于 2006-8-30 20:55 | 显示全部楼层
这是两个函数。其中的几个参数跟整个的实验数据有关,即:ffs,xs的值为:在第一段函数时,等于实验数据的开头两个数,而对于第二段函数,等于实验数据中间的两个数。
发表于 2006-8-30 20:59 | 显示全部楼层
原帖由 nsxyhjffzq 于 2006-8-30 20:55 发表
这是两个函数。其中的几个参数跟整个的实验数据有关,即:ffs,xs的值为:在第一段函数时,等于实验数据的开头两个数,而对于第二段函数,等于实验数据中间的两个数。


这个需要你写成function的形式,具体自己看一下帮助吧
 楼主| 发表于 2006-8-31 09:24 | 显示全部楼层
多谢!
 楼主| 发表于 2006-8-31 10:33 | 显示全部楼层
想再请教一个问题:

当一个函数用lsqcurvefit去优化参数时,其优化的参数值随着给予的初始值不断的变化,因此不知怎么样能来优化该初始值。还有我的exitflag=0,这样得到的结果是不是不太行。

:@)谢谢。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-25 07:15 , Processed in 0.062725 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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