一. lsqcurvefit()使用方法

1.lsqcurvefit使用形式如下几种

x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
x = lsqcurvefit(problem)
[x,resnorm] = lsqcurvefit(___)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(___)
[x,resnorm,residual,exitflag,output,lambda,jacobian] = lsqcurvefit(___)

2.输入参数解释:

fun:符号函数,例如匿名函数: @(A,B,X) A*X+B;
x0:初始解向量,需要求解的参数,使用前需要初始化.在上面的匿名函数中,x0可以看作是由A和B组成的向量,x0 = [A,B] ,为了基于X和Y数据,拟合出最适合的A,B参数;
xdata:已有的x值(可看作是输入数据);
ydata:已有的y值(可看作是样本的标签);
lb,ub:解向量的上下界限,lb <= x0 <= ub,若没有要求,就设为空lb=[ ],ub=[ ];
options:指定优化器的参数,也可只适用默认值,不设定,常见设置如下:

Option 作用
Display ‘off’ ,‘iter’ , ‘final’ , ‘notify’ ‘off’ :不显示输出; ‘iter’ :显示每次迭代的结果; ‘final’ :显示最终结果; ‘notify’ :只在函数不收敛的时候显示结果
MaxFunEvals 正整数 函数求值运算最高次数
MaxIter 正整数 最大迭代次数
TolFun 正数 迭代终止误差
TolX 正数 结束迭代的X值

例子:
fun = @(X0,X) X0*X
options = optimset(‘MaxFunEvals’,800,‘MaxIter’,500);
w = lsqcurvefit(fun,X0,X_data,Y_data,[],[],options);

3.返回值

[x,resnorm,residual,exitflag,output] = lsqcurvefit(___)

x:求出的解向量,即拟合的最优解。可以认为是x0不断迭代拟合,优化调整后,得到的最优的x0;
resnorm:残差的平方和,sum ((fun(x0,xdata)-ydata).^2);
residual:残差,fun(x0,xdata)-ydata;
exitflag:终止迭代的条件;
output:输出的优化信息。

完整示例:

xdata = [0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];
ydata =[455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];
fun = @(x,xdata)x(1)*exp(x(2)*xdata);
x0 = [100,-1];
options = optimset('MaxFunEvals',800,'MaxIter',500);
lb = [];
ub = [];
[x,resnorm,residual,exitflag,output] = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options);

二. 报错Objective function is returning undefined values at initial point. lsqcurvefit cannot continue.

报这种错误的原因一般有两种,一是初始值设置的问题;二是拟合的数据中存在无定义的数据或者是空数据;

1.第一种的解决办法

重新设置初始值,例如原来是0~1范围内的初始值,可以将其变换一下,使其在10以上,100以上,0~0.1,0~0.01等等,多次不同范围的尝试即可。

2.第二种的解决办法(大多数是这种)

检查xdata和ydata矩阵,是否含有空数据(NaN)。但是如果矩阵太大,肉眼无法在变量栏中一下子直接看到,可以首先判断矩阵中所有位置上的元素是否为NaN,返回一个0,1矩阵,0:没有,1:有,进而返回NaN的位置索引。
(1)判断矩阵或向量中是否有空值
          isnan()函数,判断矩阵中所有位置上的元素是否为NaN,返回一个0,1矩阵,0:没有,1:有

>> matrix=[4,NaN;3,5]matrix =4   NaN3     5>>  a = isnan(matrix)a =2×2 logical 数组0   10   0

(2)判断矩阵或向量中是否有
          find()函数可以找到1的位置,也就对应了原始矩阵matrix中NaN的位置


>> [x,y] = find(a == 1)x =1y =2>>

Matlab中数据拟合函数lsqcurvefit的使用方法与常见问题相关推荐

  1. matlab里newff,新版matlab中神经网络训练函数newff的使用方法

    新版matlab中神经网络训练函数newff的使用方法 新版 Matlab 中神经网络训练函数 Newff 的使用方法一. 介绍新版 newffSyntax net = newff(P,T,[S1 ...

  2. 新版matlab newff,[转载]新版Matlab中神经网络训练函数Newff的使用方法

    新版Matlab中神经网络训练函数Newff的使用方法 一. 介绍新版newff Syntax · net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl}, ...

  3. Matlab newff 训练时间,新版Matlab中神经网络训练函数Newff的使用方法

    新版Matlab中神经网络训练函数Newff的使用方法 一. 介绍新版newff Syntax · net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl}, ...

  4. matlab newff,新版Matlab中神经网络训练函数Newff的使用方法.doc

    新版Matlab中神经网络训练函数Newff的使用方法 介绍新版newff Syntax net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl}, BTF, ...

  5. matlab中sumf,sum函数(sum公式使用方法)

    意思是:返回某一单元格区域中数字.逻辑值及数字的文本表达式之和.实例:SUM(3, 2) 等于5.SUM("3", 2, TRUE) 等于6,因为文本值被转换成数字,而逻辑值 ". C语言的sum是什 ...

  6. 新版Matlab中神经网络训练函数Newff的使用方法

    一.   介绍新版newff Syntax ·         net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl}, BTF,BLF,PF,IPF,OP ...

  7. matlab中多项式拟合如何给出r方,matlap拟合函数后r^2怎么求

    matlab拟合函数 求助 尝试用二次多项式拟合: clearall; x=2:2:20; y=[0.31.232.416.267.958.529.049.179.299.37]; scatter(x ...

  8. matlab中设置拟合初值,matlab中的nlinfit函数时,参数需要回归系数的初值,如何确定?...

    matlab中的nlinfit函数时,参数需要回归系数的初值,如何确定? 2018-4-4来自ip:11.11.16.15的网友咨询 浏览量:142 问题补充: matlab中的nlinfit函数时, ...

  9. MATLAB中的常用函数小结

    1. MATLAB中的常用函数小结 文章目录 1. MATLAB中的常用函数小结 1. MATLAB图像处理工具箱 1.1 图像显示 1.2 图像文件输入/输出 1.3. 图像像素值及其统计 1.4 ...

最新文章

  1. MAC OS X El CAPITAN 搭建SPRING MVC (1)- 目录、包名、创建web.xml
  2. iOS10 推送通知 UserNotifications
  3. python 解析 配置文件
  4. 使用COE脚本绑定SQL Profile
  5. php中get和set区别,javascript中set与get方法详解
  6. 名词解释计算机网络体系结构,计算机网络技术题库(带答案).doc
  7. 流量计算机标准,流量计算机
  8. springmvc整合mybatis之准备阶段与文件配置
  9. Wayland 协议的解析
  10. L1-053 电子汪-PAT团体程序设计天梯赛GPLT
  11. 通过iMazing将Safari浏览器的书签导出至电脑
  12. python实例编写(7)---测试报告与测试套件(多个py文件,1个py文件内多个用例)
  13. 应用程序正常初始化 0x0150002失败
  14. CNCC 2022| 隐私计算:理论、技术、应用与未来
  15. python ndimage.gaussian_filter_Python ndimage.maximum_filter方法代碼示例
  16. ⅰsee是什么意思_l see 什么意思
  17. 电大考试计算机应用基础考试试题,电大计算机应用基础网络教育统考考试(2013真题卷)...
  18. 路由协议(实例讲解)
  19. 如何将一个图片转换为一个链接
  20. SonicWall TZ-215 防火墙基本介绍

热门文章

  1. 剑桥制造学院下的研究硕士项目!
  2. express+mongodb+vue实现增删改查-全栈之路2.0
  3. Android 5.0+高级动画开发 矢量图动画 轨迹动画 路径变换
  4. 用linux mail命令发送邮件时指定发送人
  5. 备战双十一,大数据告诉你哪家快递公司最强?
  6. 5G时代 我国在通信技术领域弯道超车指日可待
  7. Java编程的逻辑 (59) - 文件和目录操作
  8. HeartBeat Install
  9. POJ 2155 Matrix 二维线段树
  10. Exadata上的分页查询性能测试