x=0:0.1:1;
y=[0,0.8936,1.1269,1.0527,0.8632,0.6548,0.4701,
0.3230,0.2135,0.1360,0.0833];
subplot(1,2,1);//将图像分为1行两列,在第一列作图
plot(x,y,x,y,'ro');//先用线连接点,再用点描述点
xx=0:0.02:1;
yy=interp1(x,y,xx,'spline');//插值法
subplot(1,2,2)
plot(xx,yy,'b',x,y,'ro');
data=[129.0,7.5,4;
140.0,141.5,8;
108.5,28.0,6;
88.0,148.0,8;
185.5,22.5,6;
195.0,137.5,8;
105.5,85.5,8;
157.5,-6.5,9;
107.5,-81.0,9;
77.0,3.0,8;
81.0,56.5,8;
162.0,84.0,4;
117.5,-38.5,9;
162.0,-66.5,9];
plot(data(:,1),data(:,2),'*');%data第一列数据
和第二列数据
xx=[75,-50;200,-50;200,150;75,150;75,-50];%正方形
四个坐标,还要首尾相连
hold on; //保持坐标系数不变
plot(xx(:,1),xx(:,2),'r'); %画正方形
xlabel('x');
ylabel('y');
title('水面离散平面图');
pause;
d=zeros(14,1);
w=zeros(14,1);
p=3;
[X,Y]=meshgrid(75:1:200,-50:1:150); //在这区间上画图
Z=zeros(size(X));
[m,n]=size(X);
tp=0;
for i=1:m
for j=1:n
for k=1:14
d(k)=sqrt((X(i,j)-data(k,1))^2+(Y(i,j)-data(k,2))^2);%计算每个点到14个已知点的距离
w(k)=1.0/d(k)^p;
end;
s=sum(w); %根据反距离权重法先算总和
w=w/s; %再算14个点中每个点占比
z=sum(data(:,3).*w);%w*z求和
Z(i,j)=-z;
if(z<=5)
tp=tp+1;
D(tp,1)=X(i,j); //存x坐标
D(tp,2)=Y(i,j);//存y坐标
end;
end;
end;
subplot(2,1,1);
surf(X,Y,Z); %绘制三维曲线图
xlabel('X');ylabel('Y');zlabel('Z');
title('水道测量水底形状图');
subplot(2,1,2);
contour(X,Y,Z); %等高线绘制
hold on
plot(D(:,1),D(:,2),'*');
xlabel('X');ylabel('Y');
title('水道测量等值线图');
grid on;
hold off;