请教一个关于拟和的问题
各位大虾小弟刚开始接触matlab遇到一点问题
y x1 x2 x3 x4 x5 x6 x7 x8
152995.02 18547.9 114333 30191 31669 6383 749652 1028348 5513580
171367.74 21617.8 115823 30543 31427 6931 913739 1041136 6061149
219547.72 26638.1 117171 32372 32345 7119 1820439 1056707 6917354
291772.22 34634.4 118517 33351 32171 7288 3356947 1083476 8175835
362890.84 46759.4 119850 34301 32368 7618 4705619 1117821 9419517
467888.72 58478.1 121121 35174 32380 8110 6016038 1157009 10400029
452085.4 67884.6 122389 35950 31777 8489 6721347 1185789 11000764
841118.3 74462.6 123626 36989 30877 8769 9113287 1226405 12190902
508514 78345.2 124810 37942 30338 9275 15147435 1278474 13193034
565548.62 82067.5 125909 38892 30143 9611 15407380 1351691 14529413
711378 89468.1 126583 45844 29789 9330 17312953 1402698 16089101
832801.32 97314.8 127627 48064 28737 10000 19165334 1698012 18020408
886672.02 105172.3 128453 50212 27343 10486 32117339 1765222 20531677
877036.18 117390.2 129227 52376 26263 10995 37149064 1809828 23829254
744534.24 136875.9 129988 54283 25091 11131 47022773 1870661 26937137
我想得到y=a1*x1+a2*x2+a3*x3....求a1,a2,a3...请问应该用什么函数还望指教polyfit行不?
不好意思
好像是求解非线性方程组 呵呵 data =1.0e+007 *
0.0153 0.0019 0.0114 0.0030 0.0032 0.0006 0.0750 0.1028 0.5514
0.0171 0.0022 0.0116 0.0031 0.0031 0.0007 0.0914 0.1041 0.6061
0.0220 0.0027 0.0117 0.0032 0.0032 0.0007 0.1820 0.1057 0.6917
0.0292 0.0035 0.0119 0.0033 0.0032 0.0007 0.3357 0.1083 0.8176
0.0363 0.0047 0.0120 0.0034 0.0032 0.0008 0.4706 0.1118 0.9420
0.0468 0.0058 0.0121 0.0035 0.0032 0.0008 0.6016 0.1157 1.0400
0.0452 0.0068 0.0122 0.0036 0.0032 0.0008 0.6721 0.1186 1.1001
0.0841 0.0074 0.0124 0.0037 0.0031 0.0009 0.9113 0.1226 1.2191
0.0509 0.0078 0.0125 0.0038 0.0030 0.0009 1.5147 0.1278 1.3193
0.0566 0.0082 0.0126 0.0039 0.0030 0.0010 1.5407 0.1352 1.4529
0.0711 0.0089 0.0127 0.0046 0.0030 0.0009 1.7313 0.1403 1.6089
0.0833 0.0097 0.0128 0.0048 0.0029 0.0010 1.9165 0.1698 1.8020
0.0887 0.0105 0.0128 0.0050 0.0027 0.0010 3.2117 0.1765 2.0532
0.0877 0.0117 0.0129 0.0052 0.0026 0.0011 3.7149 0.1810 2.3829
0.0745 0.0137 0.0130 0.0054 0.0025 0.0011 4.7023 0.1871 2.6937
>>y=data(:,1)
y =
1.0e+005 *
1.5300
1.7137
2.1955
2.9177
3.6289
4.6789
4.5209
8.4112
5.0851
5.6555
7.1138
8.3280
8.8667
8.7704
7.4453
>> X=data(:,2:9)
X =
1.0e+007 *
0.0019 0.0114 0.0030 0.0032 0.0006 0.0750 0.1028 0.5514
0.0022 0.0116 0.0031 0.0031 0.0007 0.0914 0.1041 0.6061
0.0027 0.0117 0.0032 0.0032 0.0007 0.1820 0.1057 0.6917
0.0035 0.0119 0.0033 0.0032 0.0007 0.3357 0.1083 0.8176
0.0047 0.0120 0.0034 0.0032 0.0008 0.4706 0.1118 0.9420
0.0058 0.0121 0.0035 0.0032 0.0008 0.6016 0.1157 1.0400
0.0068 0.0122 0.0036 0.0032 0.0008 0.6721 0.1186 1.1001
0.0074 0.0124 0.0037 0.0031 0.0009 0.9113 0.1226 1.2191
0.0078 0.0125 0.0038 0.0030 0.0009 1.5147 0.1278 1.3193
0.0082 0.0126 0.0039 0.0030 0.0010 1.5407 0.1352 1.4529
0.0089 0.0127 0.0046 0.0030 0.0009 1.7313 0.1403 1.6089
0.0097 0.0128 0.0048 0.0029 0.0010 1.9165 0.1698 1.8020
0.0105 0.0128 0.0050 0.0027 0.0010 3.2117 0.1765 2.0532
0.0117 0.0129 0.0052 0.0026 0.0011 3.7149 0.1810 2.3829
0.0137 0.0130 0.0054 0.0025 0.0011 4.7023 0.1871 2.6937
>>A=B\y
A =
7.9955
6.3956
16.8403
-47.6754
33.8615
-0.0210
0.1933
-0.0217
这是最小二乘解的拟合结果
[ 本帖最后由 ericlin 于 2006-9-3 13:13 编辑 ] 数据是单精度的。可以先format long
还有不好意思,没仔细弄。我拟合的形式是XA=y,你可以换成AX=y
[ 本帖最后由 ericlin 于 2006-9-3 13:36 编辑 ] 下面是1stOpt拟合得出的结果:
a1 -0.314885339151814
a2 67.4088361573617
a3 -101.868839276268
a4 187.03386707848
a5 220.443567450402
a6 222.22295390547
a7 0.197586694854645
a8 1.93144367411355 对不起,将y的数列看错了,结果应与ericlin的一样:
a1 7.99548915877237
a2 6.39556858065912
a3 16.8403109437037
a4 -47.6754436204909
a5 33.861495383204
a6 -0.020960481194282
a7 0.193256752507244
a8 -0.0217383336930015 感谢各位大虾的帮助 非常感谢了!!!
页:
[1]