rc135 发表于 2006-9-3 11:14

请教一个关于拟和的问题

各位大虾
小弟刚开始接触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行不?

rc135 发表于 2006-9-3 11:20

不好意思

好像是求解非线性方程组 呵呵

ericlin 发表于 2006-9-3 12:46

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 编辑 ]

ericlin 发表于 2006-9-3 12:47

数据是单精度的。可以先format long
还有不好意思,没仔细弄。我拟合的形式是XA=y,你可以换成AX=y

[ 本帖最后由 ericlin 于 2006-9-3 13:36 编辑 ]

dingd 发表于 2006-9-3 12:59

下面是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

dingd 发表于 2006-9-3 19:15

对不起,将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

rc135 发表于 2006-9-4 12:11

感谢各位大虾的帮助   非常感谢了!!!
页: [1]
查看完整版本: 请教一个关于拟和的问题