zhydai 发表于 2007-5-4 20:36:48

用matlab怎样实现曲面(线)的拟合

本帖最后由 ljelly 于 2010-1-13 12:52 编辑

我是新手,谢谢各位了,最好能给我一个实例 谢谢
我的邮箱是zhy_dai@163.com
非常感谢

wei343 发表于 2007-5-4 22:18:03

这方面的例子书上很多
你最好能把你要实现的情况说说
把数据传上来

zhaiyongjie 发表于 2007-5-4 22:43:06

如果数据都提供的话,拟合曲面只要用mesh命令就可以了

shamohu 发表于 2007-5-4 23:23:29

相比于Matlab的曲线、曲面拟合,1stOpt来的更简单、拟合能力也更强,建议试试。

shuaipipi888 发表于 2007-5-6 16:43:06

比如y=a+b/x
怎么样用上面的公式拟和一堆数据???

handb 发表于 2007-5-7 17:17:18

要把实验得到的数据拟合出曲面关系,我的数据如下:
x y z
2.2      10      0.012099
2.3      10      0.011551
2.4      10      0.011003
2.5      10      0.010461
2.6      10      0.009935
2.7      10      0.0094313
2.8      10      0.0089579
2.9      10      0.0085226
3      10      0.0081331
3.1      10      0.007797
3.2      10      0.0075223
3.3      10      0.0073164
3.4      10      0.0071873
3.5      10      0.0071425
3.6      10      0.0071429
3.7      10      0.0071446
3.8      10      0.0071489
3.9      10      0.0071567
4      10      0.0071691
4.1      10      0.0071871
4.2      10      0.007212
4.3      10      0.0072446
4.4      10      0.0072861
4.5      10      0.0073375
4.6      10      0.0074
4.7      10      0.0074745
4.8      10      0.0075621
4.9      10      0.0076639
5      10      0.007781
5.1      10      0.0079144
5.2      10      0.0080653
5.3      10      0.0082345
5.4      10      0.0084233
5.5      10      0.0086327
5.6      10      0.0088637
5.7      10      0.0091175
5.8      10      0.009395
5.9      10      0.0096974
6      10      0.010026
6.1      10      0.010381
6.2      10      0.010764
6.3      10      0.011177
6.4      10      0.011619
6.5      10      0.012093
6.6      10      0.012599
6.7      10      0.013139
6.8      10      0.013713
6.9      10      0.014322
7      10      0.014968
2.2      15      0.011789
2.3      15      0.011568
2.4      15      0.011349
2.5      15      0.011134
2.6      15      0.010925
2.7      15      0.010727
2.8      15      0.010541
2.9      15      0.010371
3      15      0.010219
3.1      15      0.010088
3.2      15      0.0099819
3.3      15      0.0099022
3.4      15      0.0098524
3.5      15      0.0098351
3.6      15      0.009836
3.7      15      0.0098388
3.8      15      0.0098441
3.9      15      0.0098521
4      15      0.0098633
4.1      15      0.0098781
4.2      15      0.0098968
4.3      15      0.0099199
4.4      15      0.0099477
4.5      15      0.0099807
4.6      15      0.010019
4.7      15      0.010064
4.8      15      0.010114
4.9      15      0.010172
5      15      0.010236
5.1      15      0.010308
5.2      15      0.010388
5.3      15      0.010477
5.4      15      0.010573
5.5      15      0.010679
5.6      15      0.010795
5.7      15      0.01092
5.8      15      0.011056
5.9      15      0.011202
6      15      0.011359
6.1      15      0.011528
6.2      15      0.011708
6.3      15      0.011901
6.4      15      0.012106
6.5      15      0.012325
6.6      15      0.012556
6.7      15      0.012802
6.8      15      0.013062
6.9      15      0.013336
7      15      0.013625
2.2      20      0.012862
2.3      20      0.012448
2.4      20      0.012031
2.5      20      0.011619
2.6      20      0.011216
2.7      20      0.010829
2.8      20      0.010465
2.9      20      0.010129
3      20      0.0098277
3.1      20      0.0095673
3.2      20      0.0093541
3.3      20      0.0091941
3.4      20      0.0090936
3.5      20      0.0090587
3.6      20      0.0090588
3.7      20      0.0090596
3.8      20      0.0090619
3.9      20      0.0090662
4      20      0.0090734
4.1      20      0.0090841
4.2      20      0.009099
4.3      20      0.0091188
4.4      20      0.0091443
4.5      20      0.0091762
4.6      20      0.009215
4.7      20      0.0092617
4.8      20      0.0093168
4.9      20      0.009381
5      20      0.0094551
5.1      20      0.0095398
5.2      20      0.0096358
5.3      20      0.0097438
5.4      20      0.0098644
5.5      20      0.0099984
5.6      20      0.010147
5.7      20      0.010309
5.8      20      0.010488
5.9      20      0.010683
6      20      0.010894
6.1      20      0.011123
6.2      20      0.011371
6.3      20      0.011637
6.4      20      0.011924
6.5      20      0.01223
6.6      20      0.012558
6.7      20      0.012908
6.8      20      0.01328
6.9      20      0.013676
7      20      0.014095
2.2      25      0.10979
2.3      25      0.10074
2.4      25      0.091412
2.5      25      0.081976
2.6      25      0.072599
2.7      25      0.06345
2.8      25      0.054699
2.9      25      0.046512
3      25      0.03906
3.1      25      0.03251
3.2      25      0.027032
3.3      25      0.022793
3.4      25      0.019963
3.5      25      0.018709
3.6      25      0.018308
3.7      25      0.017923
3.8      25      0.017553
3.9      25      0.017199
4      25      0.01686
4.1      25      0.016535
4.2      25      0.016225
4.3      25      0.015929
4.4      25      0.015647
4.5      25      0.015379
4.6      25      0.015125
4.7      25      0.014884
4.8      25      0.014656
4.9      25      0.01444
5      25      0.014237
5.1      25      0.014047
5.2      25      0.013868
5.3      25      0.013702
5.4      25      0.013547
5.5      25      0.013403
5.6      25      0.01327
5.7      25      0.013148
5.8      25      0.013037
5.9      25      0.012936
6      25      0.012845
6.1      25      0.012764
6.2      25      0.012693
6.3      25      0.01263
6.4      25      0.012577
6.5      25      0.012533
6.6      25      0.012498
6.7      25      0.01247
6.8      25      0.012451
6.9      25      0.01244
7      25      0.012436
2.2      30      0.010297
2.3      30      0.011107
2.4      30      0.011932
2.5      30      0.012757
2.6      30      0.01357
2.7      30      0.014356
2.8      30      0.015101
2.9      30      0.015792
3      30      0.016414
3.1      30      0.016955
3.2      30      0.017399
3.3      30      0.017734
3.4      30      0.017945
3.5      30      0.018018
3.6      30      0.018018
3.7      30      0.018017
3.8      30      0.018014
3.9      30      0.01801
4      30      0.018002
4.1      30      0.01799
4.2      30      0.017973
4.3      30      0.017951
4.4      30      0.017923
4.5      30      0.017888
4.6      30      0.017845
4.7      30      0.017793
4.8      30      0.017732
4.9      30      0.017661
5      30      0.017579
5.1      30      0.017485
5.2      30      0.017378
5.3      30      0.017259
5.4      30      0.017125
5.5      30      0.016976
5.6      30      0.016812
5.7      30      0.016632
5.8      30      0.016434
5.9      30      0.016218
6      30      0.015984
6.1      30      0.01573
6.2      30      0.015455
6.3      30      0.01516
6.4      30      0.014843
6.5      30      0.014503
6.6      30      0.014139
6.7      30      0.013752
6.8      30      0.013339
6.9      30      0.012901
7      30      0.012436
该如何做呢?

liulei 发表于 2007-5-7 18:39:16

回复 #6 handb 的帖子

%可用样条曲面拟合,最好对原数据整理一下,拟合的代码如下:
x0=2.2:0.1:7;y0=10:5:30;
z0 =[ 0.0121    0.0118    0.0129    0.1098    0.0103
    0.0116    0.0116    0.0124    0.1007    0.0111
    0.0110    0.0113    0.0120    0.0914    0.0119
    0.0105    0.0111    0.0116    0.0820    0.0128
    0.0099    0.0109    0.0112    0.0726    0.0136
    0.0094    0.0107    0.0108    0.0635    0.0144
    0.0090    0.0105    0.0105    0.0547    0.0151
    0.0085    0.0104    0.0101    0.0465    0.0158
    0.0081    0.0102    0.0098    0.0391    0.0164
    0.0078    0.0101    0.0096    0.0325    0.0170
    0.0075    0.0100    0.0094    0.0270    0.0174
    0.0073    0.0099    0.0092    0.0228    0.0177
    0.0072    0.0099    0.0091    0.0200    0.0179
    0.0071    0.0098    0.0091    0.0187    0.0180
    0.0071    0.0098    0.0091    0.0183    0.0180
    0.0071    0.0098    0.0091    0.0179    0.0180
    0.0071    0.0098    0.0091    0.0176    0.0180
    0.0072    0.0099    0.0091    0.0172    0.0180
    0.0072    0.0099    0.0091    0.0169    0.0180
    0.0072    0.0099    0.0091    0.0165    0.0180
    0.0072    0.0099    0.0091    0.0162    0.0180
    0.0072    0.0099    0.0091    0.0159    0.0180
    0.0073    0.0099    0.0091    0.0156    0.0179
    0.0073    0.0100    0.0092    0.0154    0.0179
    0.0074    0.0100    0.0092    0.0151    0.0178
    0.0075    0.0101    0.0093    0.0149    0.0178
    0.0076    0.0101    0.0093    0.0147    0.0177
    0.0077    0.0102    0.0094    0.0144    0.0177
    0.0078    0.0102    0.0095    0.0142    0.0176
    0.0079    0.0103    0.0095    0.0140    0.0175
    0.0081    0.0104    0.0096    0.0139    0.0174
    0.0082    0.0105    0.0097    0.0137    0.0173
    0.0084    0.0106    0.0099    0.0135    0.0171
    0.0086    0.0107    0.0100    0.0134    0.0170
    0.0089    0.0108    0.0101    0.0133    0.0168
    0.0091    0.0109    0.0103    0.0131    0.0166
    0.0094    0.0111    0.0105    0.0130    0.0164
    0.0097    0.0112    0.0107    0.0129    0.0162
    0.0100    0.0114    0.0109    0.0128    0.0160
    0.0104    0.0115    0.0111    0.0128    0.0157
    0.0108    0.0117    0.0114    0.0127    0.0155
    0.0112    0.0119    0.0116    0.0126    0.0152
    0.0116    0.0121    0.0119    0.0126    0.0148
    0.0121    0.0123    0.0122    0.0125    0.0145
    0.0126    0.0126    0.0126    0.0125    0.0141
    0.0131    0.0128    0.0129    0.0125    0.0138
    0.0137    0.0131    0.0133    0.0125    0.0133
    0.0143    0.0133    0.0137    0.0124    0.0129
    0.0150    0.0136    0.0141    0.0124    0.0124];
sp=csapi({x0 y0},z0);%可得到每片三次样条曲面的系数
fnplt(sp);            %可得到拟合曲面的效果图,见附件
%也可以用最小二乘曲面拟合,代码为:
=size(z0);k=9;
C=ones(m*n,1/2*(k+1)*(k+2));
x=reshape(ones(n,1)*x0,m*n,1);
y=reshape(y0'*ones(1,m),m*n,1);
z=reshape(z0,m*n,1);
for j=0:k
    for i=0:j
    C(:,1/2*(j+1)*(j+2)-j+i)=x.^(j-i).*y.^i;   
    end
end
coefficient=C\z;

%做出曲面效果图见附件2,此图与图1稍有不同,因为采集点较少,所以拟合次数对结果影响很大
syms x y
z=ones(1,1/2*(k+1)*(k+2));sum=0;
for j=0:k
    for i=0:j
    sum=sum+sym(x^(j-i)*y^i)*coefficient(1/2*(j+1)*(j+2)-j+i);
    end
end
figure;ezmesh(sum,)

handb 发表于 2007-5-8 09:14:54

非常感谢liulei,样条拟合的结果与我的实验结果接近,如何得到拟合的关系式呢?而最小二乘法只在图上显示了部分关系式,要得到整个关系式该怎么做呢?再次感谢liulei!

handb 发表于 2007-5-8 16:11:43

还有个问题,下面的关系式是如何得到的?望解答,谢谢!
C(:,1/2*(j+1)*(j+2)-j+i)=x.^(j-i).*y.^i;

handb 发表于 2007-5-9 08:01:07

看到liulei在线,能否回答我的问题,谢谢!

handb 发表于 2007-5-10 17:09:22

系数是一个55*1矩阵,而i和j都是0:9,那么这个系数该怎么和x^(j-i)*y^i表达式匹配呢?还有上面的问题,困扰我几天了,恳请解答,谢谢.等待中.........

zhouhuijie 发表于 2010-1-12 15:56:31

为什么我这组数据用liulei的方法不行了,大家帮我曲面拟合看。
x      y      z
30000    0.1    26.089
40000    0.1    27.296
50000    0.1    28.674
60000    0.1    29.62
70000    0.1    30.683
80000    0.1    31.822
90000    0.1    33.085
100000    0.1    34.368
150000    0.1    39.658
200000    0.1    45.41
300000    0.1    55.944
400000    0.1    66.674
30000    0.2    40.601
40000    0.2    43.397
50000    0.2    45.556
60000    0.2    47.886
70000    0.2    50.016
80000    0.2    52.333
90000    0.2    54.723
100000    0.2    56.695
150000    0.2    67.77
200000    0.2    78.863
300000    0.2    101.39
400000    0.2    123.55
30000    0.3    59.612
40000    0.3    63.042
50000    0.3    67.501
60000    0.3    70.822
70000    0.3    74.365
80000    0.3    78.897
90000    0.3    82.267
100000    0.3    86.266
150000    0.3    104.91
200000    0.3    124.51
300000    0.3    160.11
400000    0.3    199
30000    0.4    80.046
40000    0.4    87.172
50000    0.4    93.218
60000    0.4    99.428
70000    0.4    104.68
80000    0.4    109.99
90000    0.4    116.52
100000    0.4    120.83
150000    0.4    149.83
200000    0.4    177.85
300000    0.4    233.38
400000    0.4    291.03
30000    0.5    105.36
40000    0.5    115.55
50000    0.5    123.92
60000    0.5    128.98
70000    0.5    138.13
80000    0.5    146.72
90000    0.5    154.47
100000    0.5    162.1
150000    0.5    202.44
200000    0.5    240.11
300000    0.5    321.26
400000    0.5    397.77
30000    0.6    134.41
40000    0.6    146.25
50000    0.6    157.26
60000    0.6    168.79
70000    0.6    176.4
80000    0.6    187.69
90000    0.6    196.03
100000    0.6    208.16
150000    0.6    261.79
200000    0.6    313.34
300000    0.6    416.67
400000    0.6    522.86
30000    0.7    166.6
40000    0.7    180.1
50000    0.7    193.71
60000    0.7    205.08
70000    0.7    220.02
80000    0.7    234.76
90000    0.7    247.32
100000    0.7    261.51
150000    0.7    322.72
200000    0.7    391.68
300000    0.7    527.84
400000    0.7    660.82
30000    0.8    202.92
40000    0.8    221.02
50000    0.8    234.81
60000    0.8    253.16
70000    0.8    270.62
80000    0.8    285.13
90000    0.8    298.29
100000    0.8    317.75
150000    0.8    402.81
200000    0.8    479.84
300000    0.8    643.82
400000    0.8    815.89
30000    0.9    239.51
40000    0.9    263.99
50000    0.9    281.77
60000    0.9    302.44
70000    0.9    323.15
80000    0.9    342.97
90000    0.9    362.54
100000    0.9    384.27
150000    0.9    483.48
200000    0.9    579.86
300000    0.9    765.01
400000    0.9    989.15

bobgogo3 发表于 2010-1-28 18:55:39

现在很多时候用的样条曲线拟合,二维曲面拟合还没碰到过,学到

weiminxiaohai 发表于 2010-3-3 11:26:59

太强了,学习中啊

chgdong213 发表于 2010-3-4 18:45:00

不错,学习了

stats01 发表于 2011-9-18 16:39:42

本帖最后由 stats01 于 2011-9-18 16:40 编辑

fx=@(b,x1,x2)(b(1)+b(2)*x1+b(3)*x2+b(4)*x1.^2+b(5)*x2.^2+b(6)*x1.^3+b(7)*x2.^3+b(8)*x1.*x2.^2+b(9)*x1.^2.*x2)./(1+b(10)*x1+b(11)*x2+b(12)*x1.^2+b(13)*x2.^2+b(14)*x1.*x2);

SSy =0.040279
b =
RSS = 0.000163196709948
MSe =7.0955e-007
R^2 =0.99595

stats01 发表于 2011-9-18 17:23:01

zhouhuijie 发表于 2010-1-12 15:56 static/image/common/back.gif
为什么我这组数据用liulei的方法不行了,大家帮我曲面拟合看。
x      y      z
30000    0.1    26.089


fx=@(b,x1,x2)(b(1)+b(2)*x1.^2+b(3)*x2.^2+b(4)*x1.*x2+b(5)*x1.^3+b(6)*x2.^3)./(1+b(7)*x1+b(8)*x2);
SSy =3.4526e+006
b =
RSS = 760.134613302
MSe =7.6781
R^2 =0.99978
页: [1]
查看完整版本: 用matlab怎样实现曲面(线)的拟合