将此部分最终的程序和画出的图片粘贴在此处(先程序、后图片),程序要做好注释,程序可以采用截图的方式,不管是采取了何种方式,程序和图片要确保完整、清晰易辨。
3.1 Matlab控制流结构的应用(6分)
求e:e=1+1+1/2!+1/3!+… (1/n!<1.0e-8)
(提示:将2.1(2)改为用while语句控制精度的形式)
3.2对数据添加随机噪声并去噪 (12分)
1.每个人根据自己的序号在SeismicData3D.mat中选一条实际地震数据测线来处理,3维地震数据大小为:512x128x128,第一维代表每条地震道的采样点数,第二维代表每条地震测线有多少地震道,第三维代表有多少条地震测线。时间采样间隔dt假定为1ms。对你所处理的那条线添加指定信噪比水平的噪声,如果你的编号为10,你添加噪声时,噪声能量/信号能量(1/SNR) = 0.3 + 10/100;
2.对添加噪声后的数据做频域空间域去噪处理;
3.画出类似下图查验去噪结果。
(提示:将SeismicData3D.mat用load函数读入工作区赋给变量Data3D,取自己的序号对应的测线,如Data=Data3D(:,:,10),参考第五章P39对数据加指定信噪比水平的随机噪声, 然后参考Chapter05_02FXDenoising P13-14对数据去噪并画图,数据和FXDenoising.m在Provided文件夹中)
4.用代码在你的个人夹(如FinalReportxx_Name)下创建名为“DataOutput”的子文件夹;
5.将你所处理的那条线写入到DataOutput文件夹下,文件名为:“Inline_xx.bin”,格式为二进制、float型,xx为你的编号;
6.将加随机噪声后的你那条线写入到DataOutput文件夹下,文件名为:“Inlinenoise_xx.bin”文件,格式为二进制、float型;
7.将加随机噪声后的你那条线写入到DataOutput文件夹下,文件名为:“Inlinenoise_xx.txt”,格式为txt文件,xx为你的编号;
8.调用segymat-1.6代码包下的ReadSegy函数将line19410.sgy文件读入Workspace 工作区;
9.调用segymat-1.6代码包下的WriteSegy函数将读入的line19410.sgy文件完整地写到DataOutput文件夹下,文件名为“line_xx.sgy” ,xx为你的编号;即要掌握segy数据的读写;
10.删除你的个人文件夹下所有后缀为 .asv的文件
11.所有的数据读写均写到自己个人文件夹(如FinalReportxx_Name)下的子文件夹DataOutput内。
(提示:segymat-1.6代码包已在Provided中给出,line19410.sgy为SUN工作站的数据格式,读写如下
[Data,SegyTraceHeaders,SegyHeader]=ReadSegy(filename);
WriteSegy('datacube.segy',data,'dt',.004,'Inline3D',Inline,'Crossline3D',Crossline,'cdpX',X,'cdpY',Y);
第6小题调用WriteSegy函数写文件:
WriteSegy('.\DataOutput\line_xx.sgy ',data))