地震资料处理实习报告.docx

上传人:b****4 文档编号:6776616 上传时间:2023-05-10 格式:DOCX 页数:43 大小:298.92KB
下载 相关 举报
地震资料处理实习报告.docx_第1页
第1页 / 共43页
地震资料处理实习报告.docx_第2页
第2页 / 共43页
地震资料处理实习报告.docx_第3页
第3页 / 共43页
地震资料处理实习报告.docx_第4页
第4页 / 共43页
地震资料处理实习报告.docx_第5页
第5页 / 共43页
地震资料处理实习报告.docx_第6页
第6页 / 共43页
地震资料处理实习报告.docx_第7页
第7页 / 共43页
地震资料处理实习报告.docx_第8页
第8页 / 共43页
地震资料处理实习报告.docx_第9页
第9页 / 共43页
地震资料处理实习报告.docx_第10页
第10页 / 共43页
地震资料处理实习报告.docx_第11页
第11页 / 共43页
地震资料处理实习报告.docx_第12页
第12页 / 共43页
地震资料处理实习报告.docx_第13页
第13页 / 共43页
地震资料处理实习报告.docx_第14页
第14页 / 共43页
地震资料处理实习报告.docx_第15页
第15页 / 共43页
地震资料处理实习报告.docx_第16页
第16页 / 共43页
地震资料处理实习报告.docx_第17页
第17页 / 共43页
地震资料处理实习报告.docx_第18页
第18页 / 共43页
地震资料处理实习报告.docx_第19页
第19页 / 共43页
地震资料处理实习报告.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

地震资料处理实习报告.docx

《地震资料处理实习报告.docx》由会员分享,可在线阅读,更多相关《地震资料处理实习报告.docx(43页珍藏版)》请在冰点文库上搜索。

地震资料处理实习报告.docx

地震资料处理实习报告

《地震资料数据处理》课程设计

总结报告

 

专业班级:

地球物理学1302班

姓名:

学号:

成绩:

 

2016年12月31日

 

一、设计内容………………………………………………………………

(1)褶积滤波……………………………………………………………

(2)快变滤波……………………………………………………………

(3)褶积滤波与快变滤波的比较………………………………………

(4)设计高通滤波因子…………………………………………………

(5)频谱分析……………………………………………………………

(6)分析补零对振幅谱的影响…………………………………………

(7)线性褶积与循环褶积………………………………………………

(8)最小平方反滤波……………………………………………………

(9)零相位转换…………………………………………………………

(11)静校正………………………………………………………………

二、程序…………………………………………………………………………

 

一、设计内容

1、褶积滤波

理想低通滤波因子

理想带通滤波因子

原始信号

 

低通滤波结果

带通滤波结果

 

2、快变滤波

原始数据

快变低通滤波结果

快变带通滤波结果

 

3.褶积滤波与递归滤波的比较

原始数据

零相位褶积滤波结果

非零相位褶积滤波结果

零相位递归滤波

非零相位递归滤波

 

4.设计高通滤波因子

原始数据

高通滤波因子

频率域高通滤波因子

 

5.频谱分析

 

正弦函数频谱

尖脉冲频谱

地震波频谱

 

6.分析补零对振幅谱的影响

正弦函数n=60

正弦函数n=128

\

非周期波形n=60

非周期波形n=64

非周期波形n=128

 

7.线性褶积与圆周褶积

线性褶积模型

圆周褶积结果

长度与圆周褶积相等的线性褶积

 

8.最小平方反滤波

原始反射系数序列

求出的反射系数序列

 

9.零相位转换

 

非零相位子波

零相位子波

 

11、地震记录

原始数据

选择第一道为参考到静校正结果

 

二、程序

1.褶积滤波

#include"stdio.h"

#include"math.h"

#include"conv.c"

#definepi3.1415926

#defineN100

#definedt0.002main()

{

floatx[100],h[101],h1[101],y_low[200],y_band[200];floatdf;

inti,m=100,n=101,l=m+n-1;floatf=70.0;

floatf1=10.0;floatf2=80.0;

FILE*fp1,*fp2,*fp3,*fp4,*fp5;fp1=fopen("INPUT1.DAT","r");

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

{

fscanf(fp1,"%f",&x[i]);

}

fp4=fopen("h_low.dat","w");

//低通滤波设计for(i=-50;i<=50;i++)

{

if(i==0)

h[i+50]=2*pi*f/pi;

else

h[i+50]=sin(2*pi*f*i*dt)/(pi*i*dt);

fprintf(fp4,"%f",h[i+50]);//outputlowpassfilter

}

fp2=fopen("synthesisdata_lowpass.DAT","w");conv(x,m,h,n,y_low,l);

for(i=50;i

{

fprintf(fp2,"%f\n",y_low[i]);}

//带通滤波器fp5=fopen("h_band.dat","w");for(i=-50;i<=50;i++)

{

if(i==0)

h1[i+50]=140;

else

h1[i+50]=sin(2*pi*f2*i*dt)/(pi*i*dt)-sin(2*pi*f1*i*dt)/(pi*i*dt);

fprintf(fp5,"%f\n",h1[i+50]);//outputbandpassfilter

}

fclose(fp5);conv(x,m,h1,n,y_band,l);

fp3=fopen("synthesisdata_bandpass.DAT","w");for(i=50;i

{

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

}

fclose(fp1);fclose(fp2);fclose(fp3);

}

2.快变滤波

#include"stdio.h"

#include"math.h"

#include"stdlib.h"

#include"fft.c"

#definepi3.1415926

main()

{

double*xr,*xi;float*H;

inti,np,nfft,k;

floatt,dt,df,f,z,fc1,fc2;FILE*fpar,*fp1,*fp2,*fp3;

//从参数文件中获得截至频率

fpar=fopen("lowpassfilter.par","r");fscanf(fpar,"%f%f",&fc1,&fc2);np=100;

k=log(np)/log

(2);if(np>pow(2,k))k=k+1;nfft=pow(2,k);dt=0.002;

df=1.0/(nfft*dt);xr=(double*)calloc(nfft,sizeof(double));xi=(double*)calloc(nfft,sizeof(double));H=(float*)calloc(nfft,sizeof(float));

//readx(n)fp1=fopen("INPUT1.DAT","r");

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

{

fscanf(fp1,"%f",&z);xr[i]=z;

}

fclose(fp1);

//补零至128位

for(i=100;i

{

xr[i]=0.0;

}

for(i=0;i

{

xi[i]=0.0;

}

//transfertofrequencydoaminfft(xr,xi,k,1);

//generatelowpassfilter(zero-phase)for(i=0;i

{

f=i*df;

if(f<=fc2&&f>=fc1)H[i]=1.0;elseH[i]=0.0;

}

//滤波器对称for(i=nfft/2;i

{

f=i*df;H[i]=H[nfft-i];

}

//filteringinfrequencydomainfor(i=0;i

{

xr[i]=xr[i]*H[i];

xi[i]=xi[i]*H[i];

}

fft(xr,xi,k,-1);fp2=fopen("lowpass2.dat","w");for(i=0;i

{

fprintf(fp2,"%f\n",xr[i]);

}

fclose(fp2);

//获取高通截至频率fpar=fopen("bandpass.par","r");fscanf(fpar,"%f%f",&fc1,&fc2);fp1=fopen("INPUT1.DAT","r");

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

{

fscanf(fp1,"%f",&z);xr[i]=z;

}

for(i=100;i

{

xr[i]=0.0;

}

for(i=0;i

{

xi[i]=0.0;

}

//transfertofrequencydoaminfft(xr,xi,k,1);

//generatelowpassfilter(zero-phase)for(i=0;i<=nfft/2;i++)

{

f=i*df;

if(f<=fc2&&f>=fc1)H[i]=1.0;else

H[i]=0.0;

}

for(i=nfft/2+1;i

{

f=i*df;H[i]=H[nfft-i];

}

//filteringinfrequencydomainfor(i=0;i

{

xr[i]=xr[i]*H[i];

xi[i]=xi[i]*H[i];

}

fft(xr,xi,k,-1);fp3=fopen("bandpass2.dat","w");for(i=0;i

{

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

}

}

3.褶积滤波与递归滤波

褶积滤波

#include"stdio.h"

#include"math.h"

#include"stdlib.h"

#include"conv.c"

#include"fft.c"

#definePI3.1415926main()

{

voidconv();

floatx[50],h[20],y[69],hreverse[20],hzero[39],yreverse[69];floatdt=0.002;

inti,m,n,l,p,q;

FILE*fp1,*fp2,*fp3,*fp4,*fp5,*fp6;m=50;n=20;

l=m+n-1;

//readx(n)fp1=fopen("INPUT3.DAT","r");

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

{

fscanf(fp1,"%f",&x[i]);

}

fclose(fp1);

//readfilterfactorh(n)fp2=fopen("hn.dat","r");fp5=fopen("h_reverse.dat","w");for(i=0;i<20;i++)

{

fscanf(fp2,"%f",&h[i]);hreverse[i]=h[19-i];fprintf(fp5,"%f\n",hreverse[i]);

}

fclose(fp2);fclose(fp5);

conv(x,m,h,n,y,l);//非零相位褶积滤波fp3=fopen("con_filter.dat","w");for(i=0;i

{

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

}

fclose(fp3);

p=n+n-1;q=m+p-1;

//构造零相位滤波因子

conv(h,n,hreverse,n,hzero,p);fp6=fopen("zerophasefilterfactor.dat","w");for(i=0;i

{

fprintf(fp6,"%f\n",hzero[i]);

}

fclose(fp6);

//零相位滤波conv(x,m,hzero,p,yreverse,q);fp4=fopen("convfilterreverse.dat","w");for(i=0;i

{

fprintf(fp4,"%f\n",yreverse[i]);

}

fclose(fp4);

}

递归滤波

#include

#include

#include

#definenp50voidmain()

{

float*x,*a,*b,*fil1,*fil2;inti;

voidrecur1();voidrecur2();

FILE*fp1,*fp2,*fp3,*fp4,*fp5;x=(float*)malloc(np*sizeof(float));a=(float*)malloc(np*sizeof(float));b=(float*)malloc(np*sizeof(float));fil1=(float*)malloc(np*sizeof(float));fil2=(float*)malloc(np*sizeof(float));

//输入地震数据

fp1=fopen("INPUT3.DAT","r");

for(i=0;i

//输入a数组值fp2=fopen("a(n).txt","r");for(i=0;i<5;i++)fscanf(fp2,"%f",a+i);

fclose(fp2);for(i=5;i

//输入b数组值fp3=fopen("b(n).txt","r");for(i=0;i<5;i++)fscanf(fp3,"%f",b+i);fclose(fp3);for(i=5;i

//正向递归滤波

recur1(x,a,b,fil1);fp4=fopen("正向递归结果.DAT","wb");for(i=0;i

{

fprintf(fp4,"%12.4f\n",fil1[i]);

}

fclose(fp4);for(i=0;i

{

printf("%12.4f\n",fil1[i]);

}

printf("\n");

//反向递归滤波

recur2(fil1,a,b,fil2);fp5=fopen("反向递归结果.DAT","wb");for(i=0;i

{

fprintf(fp5,"%12.4f\n",fil2[i]);

}

fclose(fp5);for(i=0;i

{

printf("%12.4f\n",fil2[i]);

}

}

voidrecur1(floatx[],floata[],floatb[],floatfil1[])

{

inti,j,k;

floaty1[np],y2[np];for(i=0;i

{y1[i]=0.0;

y2[i]=0.0;

for(j=0;j<=i;j++)y1[i]=y1[i]+a[j]*x[i-j];

if(i==0)y2[i]=0.0;

else{for(k=1;k<=i;k++)y2[i]=y2[i]+b[k]*fil1[i-k];

}

fil1[i]=y1[i]-y2[i];

}

}

voidrecur2(floatfil1[],floata[],floatb[],floatfil2[])

{

inti,j,k;

floaty3[np],y4[np];

for(i=np-1;i>=0;i--)

{

 

else{

 

}

y3[i]=0.0;

y4[i]=0.0;

for(j=0;j<=np-1-i;j++)y3[i]=y3[i]+a[j]*fil1[i+j];if(i==np-1)y4[i]=0.0;

for(k=1;k<=np-1-i;k++)y4[i]=y4[i]+b[k]*fil2[i+k];

}

fil2[i]=y3[i]-y4[i];

}

4.设计高通滤波因子

#include"stdio.h"

#include"math.h"

#include"stdlib.h"

#include"fft.c"

#defineN101

#definedt0.004

#definePI3.1415926

main()

{

double*h,*hi;inti,k,nfft;FILE*fp1,*fp2;

k=log(N)/log

(2);if(N>pow(2,k))k=k+1;nfft=pow(2,k);

h=(double*)malloc(nfft*sizeof(double));hi=(double*)malloc(nfft*sizeof(double));for(i=-50;i<=50;i++)

{

if(i==0)

h[i+50]=1.0/dt-60;

else

}

h[i+50]=-sin(2*PI*30.0*i*dt)/(PI*i*dt);

for(i=100;i<128;i++)

{

h[i]=0.0;

}

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

{

hi[i]=0.0;

}

fp1=fopen("timedomain.dat","w");for(i=0;i<128;i++)

{

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

}

fclose(fp1);fft(h,hi,k,1);

fp2=fopen("frequencydoamin.dat","w");for(i=0;i<128;i++)

{

fprintf(fp2,"%f\n",sqrt(h[i]*h[i]+hi[i]*hi[i]));

}

fclose(fp2);printf("itisok!

\n");

}

5.分析补零对振幅谱的影响

1、不补零

#include"stdio.h"

#include"math.h"

#include"dft.c"

#defineN60

#definePI3.1415926

#definedt0.004main()

{

floatx[N],xr[N],xi[N],w[N],wr[N],wi[N],z;inti,k;

FILE*fp,*fp1,*fp2,*fp3;

fp3=fopen("sin.dat","w");for(i=0;i

{

x[i]=sin(2.0*PI*(i+1)/30);

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

}

fclose(fp3);

fp=fopen("WAVE.DAT","r");for(i=0;i

{

fscanf(fp,"%f",&z);w[i]=z;

}

fclose(fp);

printf("itisok!

\n");dft(x,xr,xi,N);

dft(w,wr,wi,N);fp1=fopen("frequencydomain1_60.dat","w");fp2=fopen("frequencydomain2_60.dat","w");for(i=0;i

{

fprintf(fp1,"%f\n",xr[i]);

fprintf(fp2,"%f\n",wr[i]);

}

fclose(fp1);fclose(fp2);

}

2、补到64位

#include"stdio.h"

#include"math.h"

#include"stdlib.h"

#include"fft.c"

#defineN60

#definePI3.1415926

#definedt0.004main()

{

voidfft();

double*x1,*xi1,*x2,*xi2;floatz;

inti,k,nfft;

FILE*fp,*fp1,*fp2,*fp3,*fp4;k=log(N)/log

(2);

if(N>pow(2,k))k=k+1;nfft=pow(2,k);

x1=(double*)malloc(nfft*sizeof(double));xi1=(double*)malloc(nfft*sizeof(double));x2=(double*)malloc(nfft*sizeof(double))

xi2=(double*)malloc(nfft*sizeof(double));for(i=0;i

{

x1[i]=sin(2*PI*(i+1)/30);

}

fp=fopen("WAVE.DAT","r");for(i=0;i

{

fscanf(fp,"%f",&z);x2[i]=z;

}

for(i=0;i

{

xi1[i]=0.0;

xi2[i]=0.0;

}

//补到64位

for(i=N;i<64;i++)

{

x1[i]=0.0;

x2[i]=0.0;

xi1[i]=0.0;

xi2[i]=0.0;

}

fft(x1,xi1,6,1);

fft(x2,xi2,6,1);fp1=fopen("frequencydomain1_64.dat","w");fp2=fopen("frequencydomain2_64.dat","w");for(i=0;i

{

fprintf(fp1,"%f\n",sqrt(x1[i]*x1[i]+xi1[i]*xi1[i])*dt);

fprintf(fp2,"%f\n",sqrt(x2[i]*x2[i]+xi2[i]*xi2[i])*dt);

}

}

 

3、补到128位

#include"stdio.h"

#include"math.h"

#include"stdlib.h"

#include"fft.c"

#defineN60

#definePI3.1415926

#definedt0.004main()

{

voidfft();

double*x1,*xi1,*x2,*xi2;floatz;

inti,nfft;

FILE*fp,*fp1,*fp2;nfft=128;

x1=(double*)malloc(nfft*sizeof(double));xi1=(double*)malloc(nfft*sizeof(double));x2=(double*)malloc(nfft*sizeof(double));xi2=(double*)malloc(nfft*sizeof(double));

for(i=0;i

{

x1[i]=sin(2*PI*(i+1)/30);

}

fp=fopen("WAVE.DAT","r");for(i=0;i

{

fscanf(fp,"%f",&z);x2[i]=z;

}

for(i=0;i

{

xi1[i]=0.0;

xi2[i]=0.0;

}

//补到128位

for(i=N;i<128;i++)

{

x1[i]=0.0;

x2[i]=0.0;

xi1[i]=0.0;

xi2[i]=0.0;

}

fft(x1,xi1,7,1);

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

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2