测量到不同坐标点的高度值,如何用matlab画三维图
附上部分数据:
A=[-210.6627 -33391.1192 5.0273
-221.3052 -33387.7415 4.5969
-210.9391 -33393.0068 5.5647
-221.8901 -33390.7396 5.0077
-211.384 -33394.7093 5.6505
-222.6117 -33392.778 5.0554
-212.7074 -33397.5459 5.7381
-225.8973 -33397.5869 5.5587];
解:代码在matlab2009a版以上均可运行。
A=[-210.6627 -33391.1192 5.0273
-221.3052 -33387.7415 4.5969
-210.9391 -33393.0068 5.5647
-221.8901 -33390.7396 5.0077
-211.384 -33394.7093 5.6505
-222.6117 -33392.778 5.0554
-212.7074 -33397.5459 5.7381
-225.8973 -33397.5869 5.5587];
xData = A(:,1);
yData = A(:,2);
zData = A(:,3);
fitresult = fit( [xData, yData], zData, linearinterp);
figure( Name, 三维图 );
plot( fitresult, [xData, yData], zData );
xlabel( x );
ylabel( y );
zlabel( z );
grid on
view( -53, 50 );
试一试:
A=[-210.6627 -33391.1192 5.0273
-221.3052 -33387.7415 4.5969
-210.9391 -33393.0068 5.5647
-221.8901 -33390.7396 5.0077
-211.384 -33394.7093 5.6505
-222.6117 -33392.778 5.0554
-212.7074 -33397.5459 5.7381
-225.8973 -33397.5869 5.5587];
xData = A(:,1);
yData = A(:,2);
zData = A(:,3);
minx = min(xData);
maxx = max(xData);
miny = min(yData);
maxy = max(yData);
tx = linspace(minx,maxx);
ty = linspace(miny,maxy);
[XI,YI] = meshgrid(tx,ty);
ZI = griddata(xData,yData,zData,XI,YI);
mesh(XI,YI,ZI), hold
plot3(xData,yData,zData,o), hold off
xlabel( x );
ylabel( y );
zlabel( z );
grid on
view( -53, 50 );
.................
x=[7392 7392 7392 7392 5608 5608 5608 5608 8000 5000 6500 6500 6500 6500 6500 6500 6500 6500 6500 6500];
y=[476 404 476 404 476 404 476 404 440 440 440 440 500 380 440 440 440 440 440 440];
z=[17.06 16.93 17.8 17.4 17.17 16.89 17.28 17.26 17.04 16.94 16.92 17.3 17.37 17.17 17.34 17.11 17.22 17.24 17.11 17.2];
minx = min(x);
maxx = max(x);
miny = min(y);
maxy = max(y);
[X,Y,Z]=griddata(x,y,z,linspace(minx,maxx),linspace(miny,maxy),v4); %插值
figure,surf(X,Y,Z) %三维曲面
...
%% Initialization.
% Convert all inputs to column vectors.
x = x(:);
y = y(:);
z = z(:);
%% Fit: fit 1.
ft = linearinterp;
opts = fitoptions( ft );
opts.Weights = zeros(1,0);
opts.Normalize = on;
[fitresult, gof] = fit( [x, y], z, ft, opts );
% Plot fit with data.
figure( Name, untitled fit 1 );
h = plot( fitresult, [x, y], z );
% legend( h, fit 1, z vs. x, y, Location, NorthEast );
% Label axes
xlabel( x );
ylabel( y );
zlabel( z );
grid on
.......................
x=[7392 7392 7392 7392 5608 5608 5608 5608 8000 5000 6500 6500 6500 6500 6500 6500 6500 6500 6500 6500];
y=[476 404 476 404 476 404 476 404 440 440 440 440 500 380 440 440 440 440 440 440];
z=[17.06 16.93 17.8 17.4 17.17 16.89 17.28 17.26 17.04 16.94 16.92 17.3 17.37 17.17 17.34 17.11 17.22 17.24 17.11 17.2];
% Convert all inputs to column vectors.
x = x(:);
y = y(:);
z = z(:);
%% Fit: fit 1.
ft = fittype( poly22 );
opts = fitoptions( ft );
opts.Lower = [-Inf -Inf -Inf -Inf -Inf -Inf];
opts.Upper = [Inf Inf Inf Inf Inf Inf];
opts.Weights = zeros(1,0);
[fitresult, gof] = fit( [x, y], z, ft, opts );
fitresult
% Plot fit with data.
figure( Name, z );
h = plot( fitresult, [x, y], z );
% legend( h, z fit 1, z vs. x, y, Location, NorthEast );
% Label axes
xlabel( x );
ylabel( y );
zlabel( z );
grid on
view( -57.5, 42 );
.................
A=[
18467 17001 308
20177 17642 276
26852 16114 225
23785 17643 194
27823 14737 189
18906 16346 173
25981 18051 173
22046 17634 171
23238 6502 169
27696 11621 169
27700 11609 165
16607 17365 155
23146 15382 153
14405 18032 152
27232 14482 150
27380 18202 136
26591 13715 126
14074 16516 124
15801 3966 115
21684 13101 114
15255 5110 110
24580 13319 107
23325 16701 105
24065 7353 104
25021 16290 104
15952 18397 103
27346 13331 100
24685 14278 98
17414 15476 97
12778 5799 93
17044 10691 93
17981 18449 93
20983 15862 93
22605 14301 93
5451 2757 92
19041 15769 90
24003 15286 90
7100 2449 89
18413 11721 88
21475 8540 85
19007 11488 84
17008 4775 82
17079 5894 81
13855 3345 79
13920 5354 79
22193 12185 79
16569 6055 78
18993 12371 78
22965 13535 78
15517 17034 77
24631 9422 76
4153 2299 73
11702 4480 71
24153 12450 71
15007 5535 70
19569 7348 70
15087 3512 69
22846 9149 69
25461 9834 68
16823 4207 67
21766 12348 67
12625 16259 66
];
x=A(:,1);
y=A(:,2);
z=A(:,3);
minx = min(x);
maxx = max(x);
miny = min(y);
maxy = max(y);
[X,Y,Z]=griddata(x,y,z,linspace(minx,maxx),linspace(miny,maxy),v4); %插值
figure,surf(X,Y,Z) %三维曲面
...
%% Initialization.
% Convert all inputs to column vectors.
x = x(:);
y = y(:);
z = z(:);
%% Fit: untitled fit 1.
ft = linearinterp;
opts = fitoptions( ft );
opts.Weights = zeros(1,0);
opts.Normalize = on;
[fitresult, gof] = fit( [x, y], z, ft, opts );
% Plot fit with data.
figure( Name, fit 1 );
h = plot( fitresult, [x, y], z );
% legend( h, fit 1, z vs. x, y, Location, NorthEast );
% Label axes
xlabel( x );
ylabel( y );
zlabel( z );
grid on
展开阅读全文