matlab中已知X,Y,Z坐标,绘制等高线图

本文采用的数据是2011年国赛的题目,使用每一点的x,y坐标,将其对应的每一元素的浓度作为z,绘制金属污染物的二维等高线图

以As为例,以下两个图形还使用了插值算法

load data%每一点坐标信息,共有319个点
load data1%浓度信息,有319个数据
As=data1(:,1);    %1为第一种重金属元素As,若想要其他重金属的,直接改为相应序号
X=data(:,1); %横坐标
Y=data(:,2); %纵坐标
[x y]=meshgrid(0:100:3e4,0:100:2e4); %根据坐标范围划分,作为插值使用
z=griddata(X,Y,As,x,y,'v4');%该命令实现插值,v4是插值方法
C=contour(x,y,z);
title('As')

绘制出来的图形为
matlab中已知X,Y,Z坐标,绘制等高线图_第1张图片

还可以绘制整个城区的地形图,就是5个功能区在整个城区的分布情况。
其中,等高线的x,y,z坐标分别代表选取点的x,y,和海拔

function draw1 ()
clc,clear%一是生活区、二是工业区、三是山区、四是交通区、五是公园绿地区

%画功能区
load data
load data1
[c1 d1]=find(data(:,4)==1); %即找到功能区1,返回的c1是每个数据对应的位置编号,即行标号;d1就是1
x1=data(c1,1); %功能区1的横坐标
y1=data(c1,2); %功能区1的纵坐标
plot(x1,y1,'r*');
[c2 d2]=find(data(:,4)==2); %同上
x2=data(c2,1);
y2=data(c2,2);
hold on
plot(x2,y2,'kd','markerfacecolor','k')
hold on
[c3 d3]=find(data(:,4)==3);
x3=data(c3,1);
y3=data(c3,2);
plot(x3,y3,'cs','markerfacecolor','c')
hold on
[c4 d4]=find(data(:,4)==4);
x4=data(c4,1);
y4=data(c4,2);
plot(x4,y4,'bp','markerfacecolor','b')
hold on
[c5 d5]=find(data(:,4)==5);
x5=data(c5,1);
y5=data(c5,2);
plot(x5,y5,'go','markerfacecolor','g')
grid on
legend('生活区','工业区','山区','交通区','公园绿地区');
hold on

%画等高线
XYZ=data(:,1:end-1);
XYZ=XYZ';
[x,y]=meshgrid(0:100:3e4,0:100:2e4); 
z=griddata(XYZ(1,:),XYZ(2,:),XYZ(3,:),x,y,'v4');%插值
C=contour(x,y,z)
hold on

绘制图形如下
matlab中已知X,Y,Z坐标,绘制等高线图_第2张图片

你可能感兴趣的:(数学建模,数学建模)