石油软件概论实验报告.docx

上传人:b****3 文档编号:1463859 上传时间:2022-10-22 格式:DOCX 页数:22 大小:882.62KB
下载 相关 举报
石油软件概论实验报告.docx_第1页
第1页 / 共22页
石油软件概论实验报告.docx_第2页
第2页 / 共22页
石油软件概论实验报告.docx_第3页
第3页 / 共22页
石油软件概论实验报告.docx_第4页
第4页 / 共22页
石油软件概论实验报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

石油软件概论实验报告.docx

《石油软件概论实验报告.docx》由会员分享,可在线阅读,更多相关《石油软件概论实验报告.docx(22页珍藏版)》请在冰豆网上搜索。

石油软件概论实验报告.docx

石油软件概论实验报告

 

本科生实验报告

实验课程石油地球物理软件技术概论

学院名称地球物理学院

专业名称勘查技术与工程(石油物探)

学生姓名

学生学号

指导教师赵宪生

实验地点地球物理学院5417

实验成绩

 

二〇一五年4月-二〇一五年5月

 

资料处理软件与交互软件设计

摘要

地震勘探采集的数据需要经过一定的处理,才能被解释使用,地震勘探采集数据多为seg_y格式,石油勘探采集处理越来越依赖于计算机技术的发展,使用计算机技术实现地球物理处理软件设计、交互软件设计和图形软件设计及可视化和集成化基本技术。

本实验报告中,主要针对seg_y格式数据进行滤波处理,比较带通滤波和低通滤波的结果差异;对给定信号进行剩余时差校正,并写出相应的C语言源程序;并在MFC框架程序下,设计出相应的交互集成软件。

关键字:

seg_y,带通滤波,低通滤波,剩余时差校正,交互集成软件

 

第一章seg-y数据滤波

1.1方法

分析已知seg-y数据格式的程序,补充该程序中计算滤波因子的子函数段,选择参数对数据文件366.sgy完成滤波处理,以及对某一道数据做谱分析,比较低通滤波和带通滤波及参数对结果的影响。

用Fimage.exe程序显示原数据和滤波处理数据,比较分析结果。

1.2源程序

#include

#include

#include

#include

#defineLEN3200

#defineNQ230000

#definePI3.1415926

//==========低通滤波因子=========//

floatfilter1(floath[],intn)

{

inti;

floatfc;

doublet,dt=0.002;

printf("输入fc:

\n");

scanf("%f",&fc);

for(i=1;i<=n/2;i++)

{

t=i*dt;

h[i]=sin(2*PI*fc*t)/(PI*t);

h[i+n/2]=h[i];

}

h[25]=2*fc;

for(i=1;i<=n/2;i++)

{

h[n/2-i]=h[n/2+i];

}

}

//============带通滤波因子=========//

floatfilter2(floath[],intn)

{

inti;

floatf1,f2,df,f0;

doublet,dt=0.002;

printf("输入f1、f2:

\n");

scanf("%f%f",&f1,&f2);

f0=(f1+f2)/2;

df=abs(f2-f1)/2;

for(i=0;i<=n/2;i++)

{

t=i*dt;

h[i]=2*cos(2*PI*f0*t)*sin(2*PI*df*t)/(PI*t);

h[i+n/2]=h[i];

}

h[25]=4*df;

for(i=0;i<=n/2;i++)

{

h[n/2-i]=h[n/2+i];

}

}

//==========求褶积函数==========//

intcvbx0(floatx[],floath[],floatr[],intkc,intnt)

{

intm,np,i,j;

floatsum;

m=kc/2;

for(np=0;np

r[np]=0.0;

for(i=0;i

{

sum=0.0;

for(j=0;j

{

if((i-m+j)<0||(i-m+j)>=nt)continue;

sum=sum+x[i-m+j]*h[j];

}

r[i]=sum;

}

}

//================傅里叶函数==============//

intIBIT(intj,intm)

{

inti,it,j1,j2;

it=0;

j1=j;

for(i=1;i<=m;i++)

{

j2=j1/2;

it=it*2+(j1-2*j2);

j1=j2;

}

returnit;

}

voidfft(float*xr,float*xi,intnr,floatT)

{

inti,j,k,l,n,n2,nr1,i1,j1,k2,k1n2;

floatc,s,p,tr,ti,trc,tic,ars;

n=(int)(pow(2,nr));

n2=n/2;

nr1=nr-1;

k=0;

for(l=1;l<=nr;l++)

{

loop1:

for(j=1;j<=n2;j++)

{

k2=k/(int)(pow(2,nr1));

p=(float)(IBIT(k2,nr));

ars=(float)(6.2831852*p/(float)(n));

c=(float)(cos(ars));

s=(float)(sin(ars));

k1n2=k+n2;

tr=xr[k1n2]*c+xi[k1n2]*s*T;

ti=xi[k1n2]*c-xr[k1n2]*s*T;

xr[k1n2]=xr[k]-tr;

xi[k1n2]=xi[k]-ti;

xr[k]=xr[k]+tr;

xi[k]=xi[k]+ti;

k++;

}

k+=n2;

if(k

{

gotoloop1;

}

else

{

k=0;

nr1=nr1-1;

n2/=2;

}

}

for(j=1;j<=n;j++)

{

i=IBIT(j-1,nr)+1;

if(i>j)

{

j1=j-1;

i1=i-1;

trc=xr[j1];

tic=xi[j1];

xr[j1]=xr[i1];

xi[j1]=xi[i1];

xr[i1]=trc;

xi[i1]=tic;

}

}

if(T<0.0)

{

for(j=0;j<=n;j++)

{

xr[j]/=n;

xi[j]/=n;

}

}

}

voidmain()

{

floatki[NQ2],ko[NQ2],h[51],pr[1024],pi[1024];

intnflg,i,n,l,p;

intlen,len1,jhd;

charnamei[50],nameo[50];

FILE*fp1,*fp2,*fp3,*fp4,*fp5;

union

{

inthd[NQ2];

floatdata[NQ2];

charbuf[NQ2];

shortintshd[NQ2];

}dat;

//****************************/

printf("inputfilename:

");

scanf("%s",&namei);

printf("outputfilename:

");

scanf("%s",&nameo);

fp1=fopen(namei,"rb");

if(fp1==NULL){printf("can'topeninputsegyfile\n");exit(0);}

fp2=fopen(nameo,"wb");

if(fp2==NULL){printf("can'topenoutputsegyfile\n");exit(0);}

fp3=fopen("滤波因子.csv","w");

if(fp3==NULL){printf("can'topenfilterfactorfile\n");exit(0);}

fp4=fopen("振幅谱.csv","w");

if(fp4==NULL){printf("can'topenamplitudefile\n");exit(0);}

fp5=fopen("相位谱.csv","w");

if(fp5==NULL){printf("can'topenphasefile\n");exit(0);}

fread(&dat.buf[0],1,LEN,fp1);

fwrite(&dat.buf[0],1,LEN,fp2);

fread(&dat.buf[0],1,400,fp1);

len1=dat.shd[10];

printf("samplenumbers:

%d\n",len1);

printf("samplerate(ms):

%u\n",dat.shd[8]/1000);

printf("seg_yflag:

%d\n",dat.shd[12]);

/**********************************/

fwrite(&dat.buf[0],1,400,fp2);

nflg=dat.shd[12];

if(nflg==1)len=len1*4+240;

if(nflg==2)len=len1*4+240;

if(nflg==3)len=len1*2+240;

printf("\ninputrecordlength:

%d\n",len);

n=0;

jhd=60;

//==========计算滤波因子===========//

printf("请输入p:

\n");

scanf("%d",&p);

if(p==1)

{

filter1(h,51);

for(i=0;i<51;i++)

fprintf(fp3,"%f\n",h[i]);

}

if(p==2)

{

filter2(h,51);

for(i=0;i<51;i++)

fprintf(fp3,"%f\n",h[i]);

}

if((p!

=1)&&(p!

=2))

printf("输入错误!

请重新输入p:

\n");

//*******************************//

while((l=fread(&dat.buf[0],1,len,fp1))>0)

{

for(i=0;i

ki[i]=dat.data[i+jhd];//dat.hd[],dat.shd[]

cvbx0(ki,h,ko,51,len1);//对数据进行各种处理

for(i=0;i

dat.data[i+jhd]=ko[i];//dat.hd[],dat.shd[]

fwrite(&dat.buf[0],1,len,fp2);

n++;

//=========对第100道做谱分析==========//

if(n==100)

{

for(i=0;i<1024;i++)

{

pr[i]=ki[i];

pi[i]=0;

}

fft(pr,pi,10,1.0);

for(i=0;i<1024;i++)

{

fprintf(fp4,"%f\n",sqrt(pr[i]*pr[i]+pi[i]*pi[i]));

fprintf(fp5,"%f\n",atan(pi[i]/pr[i]));

}

}

printf("tracenumber:

%d\n",n);

}

fclose(fp1);

fclose(fp2);

fclose(fp3);

fclose(fp4);

fclose(fp5);

}

1.3结果分析

1.3.1滤波因子

 

 

图1-1低通滤波因子

 

图1-2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1