实验三 多次迭代滑动平均法程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三多次迭代滑动平均法程序设计
姓名:
专业:勘查技术与工程
学号:
指导教师:纪新林
一. 基本原理:
1.多次迭代法的计算公式:
⎪⎪
⎩
⎪⎪
⎨⎧⋅++==∑∑∑∑-=-=-=-=+Nr Nr l Mr Mr l Nr Nr l Mr Mr k P P l i k i G j i G j i G j i G 1),(),()
,(),()()1()0( 式中:),1;,1)(,(n j m i j i G ⋅⋅⋅=⋅⋅⋅=为总场值; ),1;,1)(,()0(n j m i j i G ⋅⋅⋅=⋅⋅⋅=为迭代的初始值;
P 为迭代次数,Nr 为窗口沿y 轴的半径,Mr 为窗口沿x 轴的半径。
2.多次迭代法可解决的问题:
可以进行场的分离,得到深部区域场和剩余场,同时也可以消除随机异常。
二.输入输出数据格式设计:
X 方向窗口半径:Mradius
Y 方向窗口半径:Nradius
迭代次数:Interationmax
输入总场文件名:Totalfilename 输出区域场文件名:Regfilename 输出剩余场文件名:Resfilename 总场值:G
区域场值:GReg 剩余场值:GRes 点数:mpoint 线数:nline
点坐标的最小值:Xmin 点坐标的最大值:Xmax 线坐标的最小值:Ymin 线坐标的最大值:Ymax
三.总体设计
I :输入有关参数:文件名,迭代次数,窗口半径
输入点线数,X ,Y 坐标的最大值和最小值 输入总场
P :循环进行滑动平均计算 O :输出区域场和剩余场
四.测试结果
1.测试参数如下:
(1)网格数据保存在Totalfilename.grd 中。网格数据按grd 格式保存,有27
条线、27个点,点(线)坐标从-26m~26m ,点线距为2m 。
(2) 迭代次数3,窗口半径为6m ,相关参数保存在CMD.txt 文件中:
Totalfilename.grd Regfilename.grd Resfilename.grd 3 6 6
2.测试结果:
得到区域场和剩余场的两个网格化文件:Regfilename.grd ,Resfilename.grd 用Surfer 8 分别绘制等值线图:
分别得到总场等值线图,区域场等值线图,剩余场等值线图:
-25
-20
-15
-10
-5
5
10
15
20
25
-25
-20
-15
-10
-5
5
10
15
20
25
0.020.040.060.080.10.120.140.160.180.20.220.240.260.280.30.320.340.360.38
总场等值线图
-25
-20
-15
-10
-5
5
10
15
20
25
-25
-20
-15
-10
-5
5
10
15
20
25
0.03
0.0350.040.045
0.050.055
0.060.065
0.070.075
0.080.085
0.090.095
0.1
区域场等值线图
-25
-20
-15
-10
-5
5
10
15
20
25
-25
-20
-15
-10
-5
5
10
15
20
25
-0.06
-0.04-0.02
00.020.040.060.080.10.120.140.160.180.20.220.24
0.260.28
剩余场等值线
五.结论及建议:
多次迭代滑动平均法可以进行场的分离,将一个重力异常分离为深部的区域异常和剩余场,同时能够消除随机虚假异常。
一般来说,窗口越大,滑动平均值反映的区域异常越深;迭代次数越多,得到的区域场越平滑,得到的剩余场越明显,反复迭代基本上可以消除随机异常和假异常,达到压制干扰的效果。
本次测试迭代了三次,由以上图可知,迭代得到的区域异常比总异常平滑了很多,而剩余场基本上与总场一致,有细微的差别。总体来说得到了实验要求的效果,基本上反映了多次迭代滑动平均法进行场的分离的规律。
为了使结果更加明显,可以增加迭代次数。
附录:源程序代码
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ! 程序说明
!
! 程序功能:mulfi_iter_mean --- 重力异常数据的多次迭代滑动平均处理!
! 输入参数: Mradius --- X方向窗口半径mpoint --- 点数
! Nradius --- Y方向窗口半径nline --- 线数
! Interationmax --- 迭代次数Xmin --- X测线最小值! Totalfilename --- 输入总场文件名Xmax --- X测线最大值! Regfilename --- 输出区域场文件名Ymin --- Y测线最小值! Resfilename --- 输出剩余场文件名Ymax --- Y测线最大值! G --- 总场值
!
! 所用文件:CMD.txt --- 输入相关参数
! Totalfilename.grd --- 总场输入文件
! Regfilename.grd --- 区域场输出文件
! Resfilename.grd --- 剩余场输出文件
!
! 中间变量:number --- 中间整型变量GReg --- 区域场值
! sum --- 中间实型变量GRes --- 剩余场值
! Gmax --- 网格点处异常数据的最大值
! Gmax --- 网格点处异常数据的最小值
!
! 输出参数:Regfilename.grd --- 区域场输出文件
! Resfilename.grd --- 剩余场输出文件
!
! 所用子程序:input_CMD --- 输入相关文件名和数据
! read_mpointnline --- 从输入文件中读入点线个数
! 和X,Y测线最大值最小值
! inputGRD --- 输入总场值到数组G
! mulfi_iter_mea --- 滑动平均法
! mean_sub --- 迭代过程
! outputGRD --- 输出网格化文件
!
!
! 作者:韩自强
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc