用matlab怎样实现曲面(线)的拟合
本帖最后由 ljelly 于 2010-1-13 12:52 编辑我是新手,谢谢各位了,最好能给我一个实例 谢谢
我的邮箱是zhy_dai@163.com
非常感谢 这方面的例子书上很多
你最好能把你要实现的情况说说
把数据传上来 如果数据都提供的话,拟合曲面只要用mesh命令就可以了 相比于Matlab的曲线、曲面拟合,1stOpt来的更简单、拟合能力也更强,建议试试。 比如y=a+b/x
怎么样用上面的公式拟和一堆数据??? 要把实验得到的数据拟合出曲面关系,我的数据如下:
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
该如何做呢?
回复 #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,) 非常感谢liulei,样条拟合的结果与我的实验结果接近,如何得到拟合的关系式呢?而最小二乘法只在图上显示了部分关系式,要得到整个关系式该怎么做呢?再次感谢liulei! 还有个问题,下面的关系式是如何得到的?望解答,谢谢!
C(:,1/2*(j+1)*(j+2)-j+i)=x.^(j-i).*y.^i; 看到liulei在线,能否回答我的问题,谢谢! 系数是一个55*1矩阵,而i和j都是0:9,那么这个系数该怎么和x^(j-i)*y^i表达式匹配呢?还有上面的问题,困扰我几天了,恳请解答,谢谢.等待中......... 为什么我这组数据用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 现在很多时候用的样条曲线拟合,二维曲面拟合还没碰到过,学到 太强了,学习中啊 不错,学习了 本帖最后由 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 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]