ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数模-城市表层土壤重金属污染分析

2022-05-03 12:01:20  阅读:188  来源: 互联网

标签:end title cumcm2011A 数模 && 表层 xls find 重金属


题目

image

数据

image

image

image

问题一的求解

用MATLAB软件对所给数据进行插值拟合得出调查区的地形图和8种主要重金属元素在该城区的空间分布图,再用MATLAB软件对所给数据进行分析得出功能区散点图:

Matlab griddata函数功能介绍

城区地形分布图 代码:

A=xlsread('cumcm2011A附件_数据.xls',1,'A4:E322');
x=A(:,2);y=A(:,3);z=A(:,4);
scatter(x,y,5,z)%散点图 5是散点的大小
title('功能区')
figure
[X,Y,Z]=griddata(x,y,z,linspace(0,30000)',linspace(0,20000),'v4');%插值
pcolor(X,Y,Z)
shading interp %伪彩色图
title('功能区')
figure,contourf(X,Y,Z) %等高线图
title('功能区')
figure,contour(X,Y,Z) 
title('功能区')
figure
surf(X,Y,Z)%三维曲面
title('功能区')

image

image

image

image

image

功能区分布散点图 代码:

A=xlsread('cumcm2011A附件_数据.xls',1,'A4:E322');
x=A(:,2);y=A(:,3);z=A(:,5);
x1=find(z==1);
x_1=x(x1(:));
y_1=y(x1(:));
scatter(x_1,y_1,20,'d');
hold on
x2=find(z==2);
x_2=x(x2(:));
y_2=y(x2(:));
scatter(x_2,y_2,20,'h');
hold on
x3=find(z==3);
x_3=x(x3(:));
y_3=y(x3(:));
scatter(x_3,y_3,20,'s');
hold on
x4=find(z==4);
x_4=x(x4(:));
y_4=y(x4(:));
scatter(x_4,y_4,20,'p');
hold on
x5=find(z==5);
x_5=x(x5(:));
y_5=y(x5(:));
scatter(x_5,y_5,20,'x');
title('功能区分布')
legend('生活区','工业区','山区','主干道区','公园绿地区')

image

重金属在该城区空间分布图的代码:

A=xlsread('cumcm2011A附件_数据.xls',1,'A4:E322');
B=xlsread('cumcm2011A附件_数据.xls',2,'B4:I322');
x=A(:,2);y=A(:,3);
for k=1:8
    z=B(:,k);   
    [X,Y,Z]=griddata(x,y,z,linspace(0,30000)',linspace(0,20000),'v4');%插值
    figure
    surf(X,Y,Z)%三维曲面
end

不同的重金属的空间分布图(Z轴是浓度大小):

image

image

image

image

image

image

image

image

论文中的效果图:

image

前几问可以看相关论文

城市表层土壤重金属污染分析

第三问

image
imageimage
image
image
image
image
image
image

代码:

%砷、镉、铬、铜...的污染源分布
A=xlsread('cumcm2011A附件_数据.xls',1,'A4:E322');
B=xlsread('cumcm2011A附件_数据.xls',2,'B4:I322');
ss={'As','Cd','Cr','Cu','Hg','Ni','Pd','Zn'};
x=A(:,2);y=A(:,3);%X轴 Y轴
for k=1:8
    z=B(:,k);
    [X,Y,Z]=griddata(x,y,z,linspace(0,30000)',linspace(0,20000),'v4');%插值
    z=Z';
    for i=2:99
        for j=2:99
            if (z(i,j)>z(i-1,j))&&(z(i,j)>z(i+1,j))&&(z(i,j)>z(i,j+1))&&...
                    (z(i,j)>z(i,j-1))&&(z(i,j)>z(i-1,j-1))&&(z(i,j)>z(i-1,j+1))...
                    &&(z(i,j)>z(i+1,j-1))&&(z(i,j)>z(i+1,j+1));
                z(i,j)=1000;
            end;
        end;
    end;
    [ii,jj]=find(z==1000);
    disp(ii');disp(jj');
    subplot(2,4,k)
    scatter(ii,jj,'*')
    title(ss{k})
end

image

image

筛选污染源的代码(以砷为例,其它元素的程序只需调整参数即可)

A=xlsread('cumcm2011A附件_数据.xls',1,'A4:E322');
B=xlsread('cumcm2011A附件_数据.xls',2,'B4:I322');
ss={'As','Cd','Cr','Cu','Hg','Ni','Pd','Zn'};
x=A(:,2);y=A(:,3);%X轴 Y轴
z=B(:,1);
[X,Y,Z]=griddata(x,y,z,linspace(0,30000)',linspace(0,20000),'v4');%插值
z=Z';
k=z;
for i=2:99
    for j=2:99
        if (z(i,j)>z(i-1,j))&&(z(i,j)>z(i+1,j))&&(z(i,j)>z(i,j+1))&&...
                (z(i,j)>z(i,j-1))&&(z(i,j)>z(i-1,j-1))&&(z(i,j)>z(i-1,j+1))...
                &&(z(i,j)>z(i+1,j-1))&&(z(i,j)>z(i+1,j+1));
            z(i,j)=1000;
        end;
    end;
end;
[ii,jj]=find(z==1000);
c=[ii,jj];
n=size(ii,1);
for i=1:n
    kk(i)=k(ii(i),jj(i));%这里的kk就是对应的插值出来的浓度Z的搜索值
end
pp=kk';
kkk=find(kk>15);%As的一级污染源 返回的是索引
kkk=kkk';
n=size(kkk,1);
for i=1:n
    rr(i)=pp(kkk(i));
end
rr %返回的是一级污染源的浓度
for i=1:n
    cc(i,1)=c(kkk(i),1);%c是坐标
    cc(i,2)=c(kkk(i),2);
end
cc %返回的是一级污染源的坐标
scatter(cc(:,1),cc(:,2),'*')
axis([0,100,0,100])
title(ss{1})

image

image

rr返回的是一级污染源的浓度
cc返回的是一级污染源的坐标

标签:end,title,cumcm2011A,数模,&&,表层,xls,find,重金属
来源: https://www.cnblogs.com/jgg54335/p/15125958.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有