MATLAB插值函数在地形可视化的表达中的应用
摘要
关键词
matlab ; 空间分析 ; 插值 ; 可视化
正文
可视化技术是指利用计算机图形学和图像处理技术,将抽象、复杂的数据信息转换成图形及图像在屏幕上显现出来,以便直观分析,并进行交互处理的理论,方法和技术。地形图是运用测量手段采集地貌、地物的特征点,按照正射投影的方法,并依照一定的比例尺缩绘到平面图纸上。在地形图上我们只有通过高程点或等高线的高程值来判断地面的高低起伏,其方法繁琐、不够直观。随着计算机技术的发展,利用matlab差值函数在实测高程点的基础之上插入更多的高程点,使地表的高低起伏得以逼真、形象的显现。
1.插值法
生产实践中常常出现这样的问题:给出一批离散样点,要求作出一条通过这些点的光滑曲线,以便满足设计要求或进行加工。反映在数学上,即已知函数在一些点上的值,寻求它的分析表达式。因为由函数的表格形式不能直接得出表中未列点处的函数值,也不便于研究函数的性质。此外,有些函数虽有表达式,但因式子复杂,不容易算其值和进行理论分析,也需要构造一个简单函数来近似它。
解决这种问题的方法有两类:一类是给出函数的一些样点值,选定一个便于计算的函数形式,如多项式、分式线性函数及三角多项式等,要求它通过已知样点,由此确定函数
作为
的近似。这就是插值法。另一类方法在选定近似函数的形式后,不要求近似函数过已知样点,只要求在某种意义下他在这些点上的总偏差最小。这类方法称为曲线(数据)拟合法。
1.1 Lagrange插值多项式
先讨论只有两个节点,
的插值多项式。设插值多项式为
,且满足插值条件
解此方程组得
,
(1-1)
所以,两个节点的一次插值多项式为
(1-2)
这是用过两点,
的直线
近似曲线
,故这种插值又称为线性插值。
如果将式(1-2)改写成以下形式
(1-3)
式(1-3)中,被表成两个线性函数的线性组合。记
,
显然,它们满足
,
,
即在对应的插值点
处的取值为1,在其他点处取值为0,不难想象,以对应点处的函数值为系数对它们作线性组合所得的函数,不仅仍是线性的,且必定满足插值条件。由此得到启发,当节点增多到
个时,可以先构造
次多项式
,它们满足
(1-4)
然后以对应点处的函数值为系数作线性组合,即得所要求的插值多项式。下面推导的表达式。
由式(1-4),多项式有
个根
,且
,故它必定是以下形式
(1-5)
这些函数称为Lagrange插值基函数。利用它们立即得出插值问题的解
(1-6)
事实上,因为每个插值基函数都是
次多项式,故
是至多
次多项式。由式(1-6)又得
即满足插值条件式。
式(1-5)称为次Lagrange插值多项式。为了以后便于区别,常用
代替
,以突出表示这是由Lagrange插值所得到的插值多项式,即
(1-7)
2、matlab理论
Matlab是由美国mathworks公司发布的主要面对科学计算,可视化以及交互式程序设计的高科技计算环境,它将数值分析,矩阵计算,科学数据可视化以及非线性动态的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究,工程建设以及必须进行有效数值计算的总众多科学领域提供了一种全面解决问题的方案,并在很大程度上摆脱了传统的交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。
Matlab的基本数据单位是矩阵,它的指令表达式与数学,工程中的常用形式十分相似,故用matlab解决问题要比C , C++,VB等程序语言简捷的多。并且matlab吸收了maple的软件的优点,使其成为一个强大的数学软件。
Matlab用于空间分析的优点:
1)、强大空间模型成图能力。Matlab能够将计算的结果以二维、三维乃至四维的图形表现出来,并且可以通过対图形线性,立面,色彩,渲染,光线,视角等特性的处理,把计算结果表现的淋漓尽致。
2)、强大的图像处理能力。图像处理工具包是由一系列支持图像处理的函数组成的,所支持的图像处理操作有:几何操作,区域操作和快操作,线性滤波和滤波器设计,变化,图像分析和增强,而至图像操作等。matlab不但提供非常方便的绘图功能和强大的图形图像处理能力,而且提供了增强的交互处理能力。颜色映射、线形、标记、颜色、图例、坐标轴、多窗口制图根据用户要求都可以定制;三维图形可以缩放、旋转和改变视角 。
3)、丰富的函数库。工具箱‘toolbox"是matlab扩展自身功能的开放式的开发模式。map和image是matlab提供的2个与GIS密切相关的工具箱。
3、基于matlab空间插值分析
本次实验基于matlab强大模型成图功能,运用插值函数将测量数据可视化,将杂乱的数据通过三维图形表示,从中观察出内在关系。操作的过程中“nearest”“spline”“cubic”“liner”等插值函数该过程更加简便简洁。
3.1、空间插值的实例分析
在某地区域一条公路,横向纵向区域分别每隔400 m 测量一次高程,得到已知高程点的方格网,现用Matlab做出地貌图和等高线,进行地形图可视化分析.
Y X | 1200 | 1600 | 2000 | 2400 | 2800 | 3200 | 3600 | 4000 |
1200 | 1130 | 1250 | 1280 | 1230 | 1040 | 900 | 500 | 700 |
1600 | 1320 | 1490 | 1420 | 1400 | 1300 | 700 | 900 | 850 |
2000 | 1390 | 1500 | 1500 | 1400 | 900 | 1100 | 1060 | 950 |
2400 | 1500 | 1200 | 1100 | 1350 | 1450 | 1500 | 1150 | 1010 |
2800 | 1500 | 1200 | 1100 | 1550 | 1600 | 1550 | 1380 | 1070 |
3200 | 1500 | 1550 | 1600 | 1550 | 1600 | 1600 | 1600 | 1550 |
3600 | 1480 | 1500 | 1550 | 1540 | 1450 | 1600 | 1500 | 980 |
(1)、输入实验数据,绘制粗糙的分布曲面图以及等高线
x=1200:400:4000;y=1200:400:3600;
>>z= [1 130 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 l 100 1550 1600 1550 1380 1070;1500 1550 1600 1550 1600 1500 1600 1550;1480 1500 l550 1540 1450 1300 1200 980l;
>> mesh(x,y,z) 曲面图如图1 所示
>> contour(x,y,z) 等高线图见图2所示
|
|
图1.粗燥的分布曲面图 | 图2 粗糙等高线分布图 |
(2)、以平滑数据,在x y上以20个单位进行差值
> xi=1200:20:4000;
>> yi=1200:20:3600;
>> zi=interp2(x,y,z,xi',yi,'cubic');
>> mesh(xi,yi,zi) (如下图3所示)
>> contour(xi,yi,zi) (如下图4所示)
|
|
图3 双三次插值曲面图 | 图4 插值后等高线的分布 |
(3)、将曲面图和等高线图进行叠加对比
>> meshc(x,y,z)
>> meshc(xi,yi,zi)
|
|
图5 等高线曲面图 | 图6 等高线插值曲面图 |
(4)、对原始的曲面,分别运用4种插值方法进行差值。
[xi,yi]=meshgrid(1200:20:4000,1200:20:3600);
最近点插值(见图7)
zi1=interp2(x,y,z,xi,yi,'nearest');
mesh(xi,yi,zi1)
线性插值(见图8)
zi2=interp2(x,y,z,xi,yi,'linear');
mesh(xi,yi,zi2)
样条曲线插值(见图9)
zi3=interp2(x,y,z,xi,yi,spline');
mesh(xi,yi,zi3) 立方条插值效果图 (见图10)
zi4=interp2(x,y,z,xi,yi,'cubic');
mesh(xi,yi,zi4)
|
|
图7 最近插值点效果图 | 图8 线性插值效果图 |
|
|
图9 样条曲线插值效果图 | 图10 立体线条插值效果图 |
5、结束语
本文以某地区地貌的测绘数据(三维坐标)为基本资料,以插值函数为理论依据,在matlab环境中,对地表信息进行了三维可视化的展现。还对该过程的实现的主要步骤,操作代码,以及图形处理的方法进行了详细的说明,体现了matlab在图形可视化处理方面功能之强大和在工程领域的应用之广泛。
参考文献
【1】 张林泉 、三维地形可视化matlab实现 、电脑应用与开发报,第十卷第二期
【2】 胡圣武、 基于matlab的空间分析 地理空间信息 第二十四卷第二期
【3】 孙祥 《matlab基础教程》
【4】 薛定宇 《高等数学应用问题与matlab求解》
【5】 叶其孝 《大学生数学建模教材辅导书》
...