why80038003
2010-05-08, 14:28
现在小弟有MxN个船体外表面的数据点(x,y,z),但每一列和每一行数据点的x值和y值都不相等,所以不能均分x和y;这些数据点在一个dd.txt的文件中,我分成了三列来存放它们,求问:怎么在MATLAB中插值或拟合这些点成一个曲面呢?
why80038003
2010-05-09, 17:02
试试griddata()这个函数好像不行啊,因为我的这些点每一次的x值都不一样,下面是我的这些点,一行21个点,每行x值都是从-50到50,总共7行。能不能帮我写个小程序啊?不胜感激啊!
-50.0000 0.0000 0.0000
-45.9499 0.7744 0.0000
-40.0035 1.7990 0.0000
-35.1121 2.5343 0.0000
-29.9853 3.2016 0.0000
-25.0040 3.7496 0.0000
-19.9989 4.2000 0.0000
-15.0003 4.5500 0.0000
-10.0000 4.8000 0.0000
-5.0000 4.9500 0.0000
0.0000 5.0000 0.0000
5.0000 4.9500 0.0000
10.0000 4.8000 0.0000
15.0003 4.5500 0.0000
19.9989 4.2000 0.0000
25.0040 3.7497 0.0000
29.9851 3.2016 0.0000
35.1130 2.5342 0.0000
40.0002 1.7996 0.0000
45.9510 0.7737 0.0000
50.0000 0.0000 0.0000
-50.0000 0.0064 -0.8238
-45.9496 0.7663 -0.8231
-40.0032 1.7715 -0.8226
-35.1119 2.4927 -0.8223
-29.9851 3.1472 -0.8224
-25.0038 3.6846 -0.8227
-19.9988 4.1262 -0.8233
-15.0002 4.4692 -0.8238
-9.9999 4.7142 -0.8243
-5.0000 4.8612 -0.8247
0.0000 4.9102 -0.8248
5.0000 4.8612 -0.8247
9.9999 4.7142 -0.8243
15.0002 4.4692 -0.8238
19.9988 4.1262 -0.8233
25.0038 3.6846 -0.8227
29.9849 3.1472 -0.8224
35.1127 2.4926 -0.8223
39.9999 1.7720 -0.8226
45.9507 0.7656 -0.8231
50.0000 0.0064 -0.8238
-50.0000 -0.0004 -1.9972
-45.9486 0.6952 -1.9965
-40.0024 1.6150 -1.9968
-35.1111 2.2751 -1.9970
-29.9843 2.8740 -1.9974
-25.0031 3.3657 -1.9980
-19.9983 3.7696 -1.9986
-14.9998 4.0834 -1.9992
-9.9996 4.3076 -1.9997
-4.9999 4.4419 -2.0000
0.0000 4.4867 -2.0001
4.9999 4.4419 -2.0000
9.9996 4.3076 -1.9997
14.9998 4.0834 -1.9992
19.9983 3.7696 -1.9986
25.0032 3.3657 -1.9980
29.9842 2.8740 -1.9974
35.1119 2.2750 -1.9970
39.9990 1.6155 -1.9968
45.9498 0.6945 -1.9965
50.0000 -0.0004 -1.9972
-50.0000 -0.0001 -2.9850
-45.9477 0.5988 -2.9837
-40.0018 1.3898 -2.9842
-35.1106 1.9572 -2.9851
-29.9840 2.4716 -2.9865
-25.0028 2.8938 -2.9879
-19.9981 3.2404 -2.9892
-14.9997 3.5095 -2.9903
-9.9995 3.7017 -2.9912
-4.9998 3.8169 -2.9917
0.0000 3.8553 -2.9918
4.9998 3.8169 -2.9917
9.9995 3.7017 -2.9912
14.9996 3.5095 -2.9903
19.9981 3.2404 -2.9892
25.0029 2.8938 -2.9879
29.9839 2.4717 -2.9865
35.1115 1.9571 -2.9851
39.9985 1.3902 -2.9842
45.9488 0.5980 -2.9837
50.0000 -0.0001 -2.9850
-50.0000 -0.0005 -3.9911
-45.9467 0.4585 -3.9917
-40.0013 1.0628 -3.9963
-35.1103 1.4959 -3.9985
-29.9838 1.8885 -4.0002
-25.0027 2.2110 -4.0011
-19.9980 2.4760 -4.0015
-14.9996 2.6819 -4.0019
-9.9995 2.8291 -4.0020
-4.9998 2.9175 -4.0020
0.0000 2.9468 -4.0021
4.9998 2.9175 -4.0020
9.9994 2.8291 -4.0020
14.9996 2.6819 -4.0019
19.9980 2.4760 -4.0015
25.0028 2.2110 -4.0011
29.9836 1.8885 -4.0002
35.1111 1.4958 -3.9985
39.9980 1.0631 -3.9963
45.9478 0.4577 -3.9917
50.0000 -0.0005 -3.9911
-50.0000 0.0083 -5.2895
-45.9460 0.2260 -5.2923
-40.0012 0.5079 -5.3025
-35.1104 0.7065 -5.3107
-29.9839 0.8845 -5.3173
-25.0028 1.0297 -5.3220
-19.9981 1.1486 -5.3252
-14.9996 1.2409 -5.3275
-9.9995 1.3068 -5.3289
-4.9998 1.3464 -5.3296
0.0000 1.3595 -5.3299
4.9998 1.3464 -5.3296
9.9995 1.3068 -5.3289
14.9996 1.2409 -5.3275
19.9981 1.1486 -5.3252
25.0029 1.0297 -5.3220
29.9837 0.8844 -5.3173
35.1112 0.7065 -5.3107
39.9980 0.5081 -5.3025
45.9471 0.2253 -5.2923
50.0000 0.0083 -5.2895
-50.0000 0.0000 -6.2500
-45.9456 0.0004 -6.2500
-40.0013 0.0000 -6.2500
-35.1107 0.0000 -6.2500
-29.9843 0.0000 -6.2500
-25.0033 0.0000 -6.2500
-19.9984 0.0000 -6.2500
-14.9999 0.0000 -6.2500
-9.9997 0.0000 -6.2500
-4.9999 0.0000 -6.2500
0.0000 0.0000 -6.2500
4.9999 0.0000 -6.2500
9.9997 0.0000 -6.2500
14.9999 0.0000 -6.2500
19.9984 0.0000 -6.2500
25.0033 0.0000 -6.2500
29.9842 0.0000 -6.2500
35.1115 0.0000 -6.2500
39.9981 0.0000 -6.2500
45.9467 -0.0004 -6.2500
50.0000 0.0000 -6.2500
谢谢!
这个用matlab自带的griddate插值算法,好像可以,具体做法是将数据存入A矩阵,
x=A(:,1);y=A(:,2);z=A(:,3);
scatter(x,y,5,z)%散点图
figure
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值
pcolor(X,Y,Z);shading interp%伪彩色图
figure,contourf(X,Y,Z) %等高线图
figure,surf(X,Y,Z)%三维曲面
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.