实验六测量数据可视化资料

更新时间:2024-02-27 01:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验六 测量数据可视化

一、实验目的

1、掌握用plot函数和fplot函数绘制曲线的方法 2、通过练习熟悉三维曲线和曲面图的绘制方法 3、掌握测量误差曲线和二维地形图等绘制方法

二、实验环境

1.计算机

2.MATLAB7.0集成环境

三、实验内容

1.测量平差中偶然误差分布图形绘制

根据偶然误差Δ服从Δ~ N (0 ,σ2),可以应用MATLAB绘制出均方差为σ= 1 ,σ= 2 的正态分布概率密度函数的误差分布曲线,具体为 x = - 4∶0.1∶4;

y1 = normpdf ( x ,0 ,1) ; plot(x , y1 , ′r′) hold on

y2 = normpdf ( x ,0 ,2) ; plot(x , y2 , ′b′)

1

hold off

2.

测量平差中误差椭圆的绘制

平差后任一待定点坐标平差值可以计算出,而且还可计算出误差椭圆的三要素:长半轴E,短半轴F,极大值方向。

function ellipse(x,y,A,B,angle)

%参数说明: x,y-椭圆中点的横纵坐标;A,B-椭圆长短轴;angle-椭圆旋转角度 %该函数可以通过无数个点的绘制,实现任意方向误差椭圆的绘制。

plot(y+A*sin(angle)*cos(0:pi/360:2*pi)+B*cos(angle)*sin(0:pi/360:2*pi),… x+A*cos(angle)*cos(0:pi/360:2*pi)-B*sin(angle)*sin(0:pi/360:2*pi));

axis('equal'); xlabel('x'); ylabel('y'); title('eclipse'); %以上为函数式M文件

运行ellipse(400,400,100,50,pi/4)

2

eclipse460440420400380360340y300320340360380400x420440460480500

3、图形加注功能 例:t=0:0.1:10; y1=sin(t);y2=cos(t); plot(t,y1,'r',t,y2,'b--'); x=[1.7*pi;1.6*pi]; y=[-0.3;0.8];

s=[‘sin(t)’;‘cos(t)’];

3

text(x, y, s); %指定位置加标注

title('正弦和余弦曲线');

4

legend('正弦','余弦')

label('时间t'); ylabel('正弦、余弦');%自动打开

5

grid

axis square

6

grid off

4. 再看:下面表格是某城市的采样点的具体位置及海拔,取前50个样本点(共319个取样点)。

附件1. 取样点位置及其所属功能区 编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

x(m) 74 1373 1321 0 1049 1647 2883 2383 2708 2933 4233 4043 2427 3526 5062 4777 5868 6534 y(m) 781 731 1791 1787 2127 2728 3617 3692 2295 1767 895 1895 3971 4357 4339 4897 4904 5641 海拔(m) 5 11 28 4 12 6 15 7 22 7 6 14 2 7 5 8 16 6 功能区 4 4 4 2 4 2 4 2 4 4 5 1 1 4 4 1 4 1 7

编号 x(m) 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 5635 5394 5291 4742 4948 5567 7004 7304 7048 8180 9328 9090 8049 8077 8017 6869 7056 7747 y(m) 海拔(m) 功能区 7965 8631 7349 7293 7293 6782 6226 5230 4600 4496 4311 5365 5439 6401 7210 7286 8348 8260 29 12 10 9 6 7 11 10 24 15 24 20 18 29 39 18 37 49 4 4 4 2 2 2 4 1 4 4 1 4 4 1 4 4 1 4 19 20 21 22 23 24 25 1 2 3 4 5 5481 4592 2486 3299 3573 4741 5375 生活区 工业区 山区 交通区 6004 4603 5999 6018 6213 6434 8643 0 6 2 4 5 5 15 4 1 1 4 1 5 1 44 45 46 47 48 49 50 8457 9460 9062 9319 10631 10685 10643 8991 8311 7639 6799 6472 5528 4472 21 45 45 49 57 34 45 4 4 4 4 4 4 4 功能区 公园绿地区 下表是测量所得50个样本点的Cd浓度 表二为前50个样本点的Cd的浓度:

附件2. 8种主要重金属元素的浓度

编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Cd (ng/g) 153.80 146.20 439.20 223.90 525.20 1092.90 269.80 1066.20 1123.90 267.10 201.40 287.00 193.70 359.50 516.40 1044.50 445.40 347.90 345.70 614.00 257.20 1213.50 325.80 212.10 90.50 编号 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Cd (ng/g) 583.40 366.40 323.90 424.50 630.00 635.30 463.40 532.00 778.70 754.80 396.30 687.80 526.00 449.10 852.70 459.00 337.30 568.10 599.00 635.50 600.70 567.60 228.50 568.60 214.70 8

根据数据可知,取样点之间的地理距离是无关的,在考虑重金属污染元素的分布式,只需把海拔换成浓度。

在编写程序中发现这不是一般的函数曲面,而是不规则采样点的集合。调用linespace函数在采样点范围内生成非均匀分布的数据。联合调用griddata函数将数据内插到图中。 程序清单

我们给出地形图和Cd元素的分析程序代码: 程序1:

A=xlsread('附件_数据.xls',1,'B4:E53');

%先将数据放在电子表格中,再读取把第1页中数据读取,必须会!!! x1=A(:,1);y1=A(:,2); z1=A(:,3);

[X1,Y1,Z1]=griddata(x1,y1,z1,linspace(min(x1),max(x1),200)',linspace(min(y1),max(y1),200),'v4'); %插值,v4是一种插值算法 surf(X1,Y1,Z1);

2shading interp; %在flat的基础上进行色彩的插值处理,使色彩平滑过渡

title('含量分布三维曲面');

程序2:

A=xlsread('附件_数据.xls',1,'B4:E53'); B=xlsread('附件_数据.xls',2,'H4:I53'); D=[A B];

x1=D(:,1);y1=D(:,2); z1=D(:,6);

[X1,Y1,Z1]=griddata(x1,y1,z1,linspace(min(x1),max(x1),200)',linspace(min(y1),max(y1),200),'v4');

surf(X1,Y1,Z1);shading interp; title('Cd含量分布三维曲面'); 实现图形分析

第一个图是城市地形图即地形地貌,海拔越高越趋向于红。在分析重金属污染源时,研究人员可以根据流体相关知识结合本图及当地降水量等信息,进行数据分析,以促进研究的准确性。

第二个图是Cd元素在这个城市分布的三位立体图,视觉越高颜色越深则此重金属元素含量越高。第三个图是和第二个图相对性的二维,颜色越趋近于红色则所含浓度越高。

9

6. 要在某山区方圆大约27平方公里范围内修建一条公路,从山脚出发经过一个居民区,再到达一个矿区。横向纵向分别每隔400米测量一次,得到一些点的高程,下表为数据表,请利用matlab绘制该山区地貌图、等高线图和立体等高线图。 提示:meshz(x,y,z)绘制地貌图

contour(x,y,z)绘制等高线图

10

contour3(x,y,z)绘制立体等高线图

11

y 1200 1600 2000 2400 2800 3200 3600 x 1200 1600 2000 2400 2800 3200 3600 4000 1130 1250 1280 1230 1040 900 500 700 1320 1490 1420 1400 1300 700 900 850 1390 1500 1500 1400 900 1100 1060 950 1500 1200 1100 1350 1450 1200 1150 1010 1500 1200 1100 1550 1600 1550 1380 1070 1500 1550 1600 1550 1600 1600 1600 1550 1480 1500 1550 1540 1450 1300 1200 980 x=1200:400:4000; y=1200:400:3600; [xx,yy]=meshgrid(x,y); zz=[

1130,1250,1280,1230,1040,900,500,700; 1320,1450,1420,1400,1300,700,900,850; 1390,1500,1500,1400,900,1100,1060,950; 1500,1200,1100,1350,1450,1200,1150,1010; 1500,1200,1100,1550,1600,1550,1380,1070; 1500,1550,1600,1550,1600,1600,1600,1550; 1480,1500,1550,1510,1430,1300,1200,980;]; surf(xx,yy,zz); hold on;

12

7.已知测量碎部点三维坐标如下表所示,根据下述程序经过内插绘制等高线图

表 观测数据表

序号 X(10M) Y(10M) 1 1 1 2 1 2 3 1 3 4 2 1 5 2 2 6 2 3 7 3 1 8 3 2 9 3 3 10 4 2 11

4

3

参考程序:

fid=fopen('D:\\My Documents\\MATLAB\\等值线.txt','r'); data = fscanf(fid,'%f %f %f',[3,inf]); data=data'; fclose(fid); scale=1e+8;

x =data(:,1);y =data(:,2);z =data(:,3); scale;

xb=min(x); xe=max(x); %得到最小值 yb=min(y); ye=max(y); %得到最小值 Xl=linspace(xb,xe,200); %沿x Yl=linspace(yb,ye,200); %得到y点 [X,Y]=meshgrid(Xl,Yl);%得到值的点坐标矩阵 method='cubic'; %插值方法

Z =griddata(x,y,z,X,Y,method);%曲面 figure;hold on;%准备图形窗口 [C,h]=contour(X,Y,Z);%画等高

13

H(M) 5.14 9.56 8.66 12.55 10.51 2.70 22.03 22.97 32.94 55.58 24.55

clabel(C,h);colormap cool;%标示等 box on;xlabel('x');ylabel('y');

axis equal;title('等值线图:(单位:scale)'); %设置坐标轴和标题

hold off;%停止在当前图形窗口将网格

请绘制等高线图形:(此题目写到报告中)

四、实验注意事项

(1)对没有程序的题目,分析实验内容,写出程序大致框架或完整的程序代码。并写到实验报告中。

(2)进入MATLAB7.0集成环境。 (3)编辑或验证程序,并进行保存。

(4)运行程序,若有错误,修改错误后再次运行,如此反复进行到不显示出错为止。 (5)检查程序输出结果。

五、实验心得

本次上机实验是测量数据可视化,这很复杂其中包含了许多其他方面的东西。自己在

课前做了预习,课堂上听取了老师所讲的知识。然后做实验报告时,一些简单的基础操作没有什么问题。但是其中有一部分拟合与差值的部分不是很懂,加上实验中这块的内容很少,将数据放在电子表格中,再数据读取这一块也不是很懂,需要多加的练习,很快就做出来了。

实验成绩__________________________

实验时间和地点____________________

实验指导老师______________________

14

本文来源:https://www.bwwdw.com/article/jlla.html

Top