flyash 发表于 2009-10-30 20:57:04

利用lsqcurvefit进行指数曲线拟合时如何设定初始值

本帖最后由 ljelly 于 2009-11-2 11:39 编辑

主程序为:
load Daxisdataafter.txt
format long;
data=Daxisdataafter;
xdata=data(:,1)-1.78;   %x stands for time (s)
ydata=data(:,4);    %y stands for the generator terminal voltage ut (kV)
x0=;
x=lsqcurvefit(@myfun,x0,xdata,ydata)
timeafter=min(xdata):0.02:max(xdata);   %timeafter and utafter stand fortime and ut after paozai test
utafter=x(1)*exp(x(2)*xdata)+x(3)*exp(x(4)*xdata)+x(5);
plot(xdata,ydata,'ko',timeafter,utafter,'r')

其中函数方程myfun.m为:
function F=myfun(x,xdata)
F=x(1)*exp(x(2)*xdata)+x(3)*exp(x(4)*xdata)+x(5);


Daxisdataafter.txt为:
1.78 101.62 1141.58 21.30333333 3000
1.8 79.72 1208.58 21.04701567 2999
1.82 -77.68 1316.58 20.68022674 2999
1.84 -47.68 1279.58 20.59686562 2999
1.86 -46.68 1270.58 20.52017339 2999
1.88 -49.48 1242.58 20.44 3000
1.9 -52.48 1249.58 20.36333333 3000
1.92 -51.68 1238.58 20.29676559 2999
1.94 -48.88 1222.58 20.22674225 2999
1.96 -50.38 1221.58 20.14666667 3000
1.98 -45.78 1207.58 20.07 3000
2 -50.38 1202.58 20.00333333 3000
2.02 -45.48 1192.58 19.94663109 2998
2.04 -45.48 1197.58 19.85004998 3001
2.06 -47.28 1182.58 19.79 3000
2.08 -39.28 1176.58 19.72 3000
2.1 -36.68 1172.58 19.65988663 2999
2.12 -39.78 1171.58 19.59 3000
2.14 -40.48 1158.58 19.52 3000
2.16 -35.88 1157.58 19.46 3000
2.18 -31.78 1155.58 19.39333333 3000
2.2 -28.38 1159.58 19.33 3000
2.22 -27.68 1155.58 19.27 3000
2.24 -26.58 1146.58 19.20666667 3000
2.26 -23.58 1129.58 19.15666667 3000
2.28 -19.68 1139.58 19.09333333 3000
2.3 -17.58 1124.58 19.04 3000
2.32 -15.98 1133.58 18.98966322 2999
2.34 -14.68 1116.58 18.93 3000
2.36 -12.58 1108.58 18.87333333 3000
2.38 -7.08 1121.58 18.82333333 3000
2.4 -1.68 1124.58 18.77333333 3000
2.42 0.82 1122.58 18.73291097 2999
2.44 1.02 1114.58 18.68956319 2999
2.46 2.32 1119.58 18.63333333 3000
2.48 3.62 1113.58 18.59333333 3000
2.5 5.52 1110.58 18.55285095 2999
2.52 12.02 1117.58 18.50666667 3000
2.54 16.62 1122.58 18.47898599 2998
2.56 14.52 1116.58 18.42333333 3000
2.58 16.12 1112.58 18.3927976 2999
2.6 18.22 1115.58 18.34666667 3000
2.62 19.52 1114.58 18.31943981 2999
2.64 27.02 1104.58 18.27666667 3000
2.66 26.62 1108.58 18.25216811 2998
2.68 29.22 1115.58 18.21273758 2999
2.7 29.12 1116.58 18.17666667 3000
2.72 29.72 1110.58 18.15877252 2998
2.74 37.12 1103.58 18.11937312 2999
2.76 37.52 1109.58 18.11937312 2999
2.78 38.12 1106.58 18.06871247 2998
2.8 37.62 1109.58 18.036012 2999
2.82 39.82 1109.58 18.01267089 2999
2.84 46.52 1115.58 17.98865911 2998
2.86 47.42 1109.58 17.96864576 2998
2.88 47.92 1107.58 17.92333333 3000
2.9 47.12 1108.58 17.91263755 2999
2.92 49.02 1112.58 17.89263088 2999
2.94 50.42 1110.58 17.87787788 2997
2.96 59.22 1103.58 17.85190127 2998
2.98 56.02 1115.58 17.83188793 2998
3 56.32 1104.58 17.82449116 2997
3.02 56.32 1110.58 17.79259753 2999
3.04 59.12 1103.58 17.77851901 2998
3.06 57.72 1112.58 17.76184123 2998
3.08 66.82 1116.58 17.74516344 2998
3.1 64.12 1117.58 17.72848566 2998
3.12 65.82 1113.58 17.71514343 2998
3.14 65.12 1101.58 17.70437104 2997
3.16 65.42 1113.58 17.68512342 2998
3.18 64.12 1116.58 17.67434101 2997
3.2 70.52 1100.58 17.66099433 2997
3.22 73.22 1117.58 17.65098432 2997
3.24 74.12 1121.58 17.63430097 2997
3.26 73.92 1122.58 17.62429096 2997
3.28 72.62 1108.58 17.65020027 2996
3.3 72.52 1118.58 17.59172782 2998
3.32 72.52 1116.58 17.59092426 2997
3.34 74.52 1119.58 17.58425092 2997
3.36 82.92 1122.58 17.57090424 2997
3.38 79.32 1119.58 17.5642309 2997
3.4 79.62 1126.58 17.55422089 2997
3.42 79.82 1124.58 17.55340454 2996
3.44 80.02 1124.58 17.54087421 2997
3.46 79.62 1115.58 17.53420087 2997
3.48 80.02 1121.58 17.53004005 2996
3.5 81.32 1124.58 17.52670227 2996
3.52 81.42 1125.58 17.51668892 2996
3.54 86.12 1122.58 17.51001335 2996
3.56 86.62 1125.58 17.50333778 2996
3.58 86.02 1128.58 17.52670227 2996
3.6 87.02 1129.58 17.49666222 2996
3.62 87.32 1127.58 17.48998665 2996
3.64 87.32 1131.58 17.48664887 2996
3.66 86.32 1126.58 17.48331108 2996
3.68 85.32 1129.58 17.47663551 2996
3.7 84.72 1122.58 17.48496994 2994
3.72 87.92 1127.58 17.45412079 2997
3.74 87.82 1130.58 17.46577629 2995
3.76 88.12 1131.58 17.45660881 2996
3.78 87.52 1126.58 17.4590985 2995
3.8 85.72 1126.58 17.47329773 2996

拟合时,不同的初始值设定造成得到的函数系数不同。虽然有几次曲线和数据可以对上,但是得到的函数系数x(2)和x(4)与理论值x(2)=-20和x(4)=-0.117不符
请问各位,这个问题怎么解决,应该怎么找到合适的初始值进行拟合?
急求解答,多谢大侠们了

messenger 发表于 2009-10-30 21:13:56

既然有理论值x(2)=-20和x(4)=-0.117,为什么不在拟合方程中直接将上面二个数代入,拟合剩下的三个参数x(1)、x(3)、x(5)?

好运永相伴 发表于 2009-10-31 08:33:09

楼上说的有些道理。另外,初值的选取的确会对曲线拟合的结果产生影响,曲线拟合是在你所给的数据段内拟合出一条曲线,这个是有误差的,结果肯定不一定吻合理论情况。你可以试试cftool曲线拟合工具箱,在matlab命令窗口直接输入"cftool",这个工具箱你可以输入你的函数,和数据点,不需要初值,你拟合的看看与理论值比较下。你也可以自己编最小二乘法参数估计的程序,解决你的问题看看。希望有所帮助

flyash 发表于 2009-10-31 09:59:42

回复messenger:
首先多谢版主回复。我做的就是一个参数辨识的项目,恰恰需要的辨识的参数中就有这两个时间常数A(2)和A(4),所谓的理论值只是用另外一种方法计算得到的参数,是用来验证我这种方法的辨识值的,所以,不能直接代入。

回复好运常相伴:
嗯,您说的没错,肯定是有误差的,但是误差也太大了,不应该差这么多的。cftool工具箱不也是用最小二乘法非线性拟合的吗?它和lsqcurvefit或nlinfit有什么不同吗?
另外,请问lsqcurvefit和nlinfit在拟合原理上没有什么不同吧?他们的区别在哪儿呢?这些问题都不太清楚,请您指教,谢谢

messenger 发表于 2009-10-31 12:51:57

如果是验证的话,那只能说验证失败。这两个时间常数A(2)和A(4)都在指数项中,对曲线影响极大,在-20和-0.117周围无法与你的数据吻合。你再检查一下你的公式与数据吧,拟合这方面应该没什么可改进的了。

好运永相伴 发表于 2009-11-1 10:36:10

回复messenger:
首先多谢版主回复。我做的就是一个参数辨识的项目,恰恰需要的辨识的参数中就有这两个时间常数A(2)和A(4),所谓的理论值只是用另外一种方法计算得到的参数,是用来验证我这种方法的辨识值的,所以, ...
flyash 发表于 2009-10-31 09:59 http://forum.simwe.com/images/common/back.gif

cftool里面所用方法是不是最小二乘,我不清楚。如果你信不过lsqcurvefit和cftool,你完全可以自己编一个最小二乘参数估计的例子,这样的程序网上多得是,应该不难。

flyash 发表于 2009-11-2 12:44:53

多谢各位,估计是试验数据不满足理论模型的要求,再研究研究
页: [1]
查看完整版本: 利用lsqcurvefit进行指数曲线拟合时如何设定初始值