函数语法
x = lsqnonlin(fun,x0)
函数用于:
解决非线性最小二乘(非线性数据拟合)问题
解决非线性最小二乘曲线拟合问题的形式
变量x的约束上下限为ub和lb,
x = lsqnonlin(fun,x0)从x0点开始,找到fun中描述的函数的最小平方和。函数fun应该返回一个向量(或数组),而不是值的平方和。(该算法隐式地计算了fun(x)元素的平方和。)
举例:
从指数衰减模型和噪声中生成数据。模型是
t在0~3之间取值
问题是:给定数据(d, y),找出最适合数据的指数衰减率。
创建一个匿名函数,该函数接受指数衰减率r的值,并返回与该衰减率和数据的模型不同的向量。
fun = @(r)exp(-d*r)-y;
求出最优衰减率的值。任意选择一个初始值x0 = 4
x0 = 4;
x = lsqnonlin(fun,x0)
局部最小值
lsqnonlin停止了,因为相对于其初始值的平方和的最终变化小于函数容差的值。
x = 1.2645
绘制数据和最佳拟合指数曲线
plot(d,y,'ko',d,exp(-x*d),'b-')
legend('Data','Best fit')
xlabel('t')
ylabel('exp(-tx)')