想用matlab最小二乘法拟合非线性方程的4个未知参数,并画出原始数据和拟合曲线的图像。一直运行错误不知道怎么修改,错误使用 * 内部矩阵维度必须一致。
请指点~谢谢!函数如图片,a,b,c,d未知。
想用matlab最小二乘法拟合非线性方程的4个未知参数,并画出原始数据和拟合曲线的图像。一直运行错误不知道怎么修改,错误使用 * 内部矩阵维度必须一致。
请指点~谢谢!函数如图片,a,b,c,d未知。
从报错原因上看是维度不一致,可以进行以下修改:
xdata=[1 2 3 4 5];
ydata=[20 40 60 80 100];
fun=@(a, x)x.^(a (1) .*x+a (2))./(a (3).*(a(4).^(a (1) .*x+a (2))) .*gamma (1+a (1) .*x+a(2))) ;
x0=[0.3,1.2,400,200];
A=lsqcurvefit(fun, x0, xdata, ydata)
ydata=fun(A, xdata)
x=linspace(xdata(1),xdata(end)) ;
y=fun (A, x) ;
plot(xdata,ydata, 'o',xdata,ydata,'*',x,y)
结果为:
A =
-0.3489 0.9364 399.9999 199.9995
ydata =
0.0001 0.0009 0.0037 0.0092 0.0103