插值法 解决水道测量问题

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;

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值