版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 勘查技術(shù)課程設(shè)計:信號分析與處理基礎(chǔ)</p><p> 對于勘查技術(shù)與工程專業(yè)的學(xué)生來說,《信號分析與處理基礎(chǔ)》是一門專業(yè)基礎(chǔ)課,我是2010級的,我們是在大三第一學(xué)期上的,這門課數(shù)學(xué)與物理知識要求比較高,不過一開認(rèn)真仔細(xì)學(xué)的話,也會學(xué)的好的,起碼要比那空洞、生奧、蛋疼《彈性波動力學(xué)》好學(xué)些。</p><p> 隨著課程的結(jié)束,《信號分析與處理基礎(chǔ)》的課程設(shè)計也隨
2、之而來,我們是老師布置了4 個題目,分單號與雙號各自做2道,我是單號,做的是濾波與相關(guān)。</p><p> 這次課程設(shè)計,注意考驗(yàn)大家的編程能力,目前我們學(xué)過得就只有C語言,可以用Fortran,Matlab等等,Matlab可以現(xiàn)學(xué)現(xiàn)用,上手快。但是大家也可以挑戰(zhàn)下自己的C語言,提高下自己的編程能力,這是一次很好地機(jī)會,真正實(shí)用的時刻。我就是用C語言編的。</p><p> 其余2題
3、,我也把程序與結(jié)果圖收集到了這里,以供學(xué)弟、學(xué)妹們參考之用!我的QQ:593066480,有什么不懂的,或者好的見教,歡迎來信息交流!</p><p><b> 題目如下:</b></p><p><b> 濾波</b></p><p> 已知原始地震記錄x(t),要求:設(shè)計濾波器,消除x(t)中10Hz以下,80H
4、z以上的干擾信號。</p><p> 建議參數(shù): A1=1,A2=0.8,A3=0.5</p><p> f1=25Hz,f2=45Hz,f3=5Hz,f4=80</p><p> 取樣點(diǎn)數(shù):N=200</p><p> 抽樣間隔:Δ=0.004,ß=100</p><p><b> 時域
5、濾波:</b></p><p> 由 (h(t)為濾波因子)</p><p> 建議參數(shù):第一參數(shù):ff1=20Hz,ff2=50Hz</p><p> 第二參數(shù):ff1=25Hz,ff2=45Hz</p><p><b> 抽樣點(diǎn)數(shù):M=60</b></p><p>
6、抽樣間隔:Δ=0.004</p><p><b> ,</b></p><p><b> ,</b></p><p><b> 單獨(dú)計算: </b></p><p> 要求:畫出x(t),h(t),y(t)圖形,為了分析方便,也可以畫出有效波s(t),干擾波n(t)及
7、其頻譜進(jìn)行分析,如下圖: </p><p> 最后就是答辯,老師問問題,學(xué)生回答。主要注意幾點(diǎn)就行了</p><p> 熟悉課本濾波部分知識;</p><p> 第二參數(shù)要比第一參數(shù)濾波效果好,因?yàn)殚T第一參數(shù)開大了,進(jìn)來的干擾波也多了,從第一參數(shù):Fy、第二參數(shù)Fy圖形上可以看出來,干擾波頻譜被壓小了。</p><p> 第二
8、參數(shù)壓制了干擾波,突顯了有效波,所有好。</p><p><b> 頻域?yàn)V波</b></p><p><b> 由公式:</b></p><p> 對x(t)進(jìn)行補(bǔ)0,28或者29總之必須是2的次方,因?yàn)橐玫紽FT公式與IFFT公式,進(jìn)行FFT變換得到X(k);</p><p> H(k)
9、的求法:H(k)也必須與X(k)點(diǎn)數(shù)相同</p><p><b> ,</b></p><p><b> 單門:20, 50</b></p><p> 雙門:20, 50,=N-,=N-,</p><p> 3, 在用IFFT反變換得y(t),存在實(shí)部與虛部,需要分析與處理</p>
10、;<p> 要求:畫出H(k)、X(k)、Y(k)圖形,并且分析X(k)、Y(k)的區(qū)別,還有開單雙門的區(qū)別與差異,時域與頻域?yàn)V波誰好、為什么?</p><p> 分析:從單雙門實(shí)部圖形看出,與有效波是完全一樣的,但是幅值變大,這體現(xiàn)了濾波突顯有效波的特性;從圖形看出虛部對結(jié)果沒有影響;</p><p> 單雙門虛部完全不同,這是由于開單雙門效果不同引起的。單門虛部變化
11、大,而且幅值與起伏變化也大,而雙門幅值很小,小到可以忽略不計。按理說反變化IFFT后應(yīng)該只有實(shí)部,沒有虛部,至于為什么會產(chǎn)生虛部,希望讀者自己下去研究下,希望大家相互交流、交流!</p><p> 第一個注意問題:單門與雙門誰好?答案當(dāng)然是:雙門好。因?yàn)樵加行Р▁(t)是實(shí)數(shù)信號,對應(yīng)的頻譜是偶對稱的,單門時,只是讓一部分通過了;而雙門則全部通過,肯定效果要好!而且實(shí)部波形,明顯看出雙門是干擾部分起伏比單門時
12、要平緩,小得多了。</p><p> 第二個注意問題:時域與頻域哪個好?頻域要好,首先從兩者波形上可以看出,其次就是頻域?yàn)V波,只讓有效波通過,而之外的完全被濾掉,可謂是真正的理想狀態(tài)。</p><p> 第三個注意問題:頻域?yàn)V波y(t)實(shí)部圖200點(diǎn)以后,為什么有波形起伏?因?yàn)橛捎跁r域離散,必將導(dǎo)致頻域周期化,這是由于頻域周期化的結(jié)果。</p><p><
13、b> 相關(guān)</b></p><p> 建議參數(shù):1,30Hz,抽樣點(diǎn)數(shù):M=100</p><p> 0.8,50Hz,抽樣點(diǎn)數(shù):M=150</p><p> 抽樣間隔:Δ=0.004s</p><p> 要求:畫出,,的圖形并分析驗(yàn)證書上自互相關(guān)性質(zhì)的正確性!</p><p><b&
14、gt; 快速褶積</b></p><p> 建議參數(shù):1,25Hz,抽樣點(diǎn)數(shù):M=250</p><p> 0.7,55Hz,抽樣點(diǎn)數(shù):M=200</p><p> 抽樣間隔:Δ=0.004s</p><p> 地震記錄的生成和頻譜分析</p><p> 地震記錄的生成和頻譜分析、信噪比計算以及
15、補(bǔ)0對頻譜的影響,給定地震子波的數(shù)學(xué)表達(dá)式:</p><p> 和反射系數(shù)序列:0.2,0.4,0.15,0.5</p><p> 0.35, 0.1, 0.2</p><p> 產(chǎn)生一個含有隨機(jī)干擾信號的地震信號:</p><p> ?。ㄆ渲衝(t)可以用-0.4—+0.4之間的隨機(jī)數(shù)代替)</p><p>&
16、lt;b> 要求:</b></p><p> 制作合成地震記錄x(t),并對b(t)和s(t)做頻譜分析(用FFT),其中:b(t)(N=41,Δ=0.004s,f=35Hz,α=100,A1=1)反射序列和隨機(jī)干擾N=200;</p><p> 計算x(t)信噪比,改變n(t)(用-0.8—+0.8之間的隨機(jī)數(shù)代替)的大小再計算。</p><p
17、><b> 信噪比:</b></p><p> 分別對b(t)后邊、前邊、中間補(bǔ)0,計算補(bǔ)0前后頻譜的變化及補(bǔ)0多少對頻譜的影響。</p><p><b> 附帶程序:</b></p><p> 最麻煩的就是編程序了,開始的時候,是很麻煩,不過只有去啃,就一定會有收獲,比如:我開始編褶積程序的時候,整理了幾天
18、,上網(wǎng)查,翻圖書,后來突然明白,靠公式就可以編出來了。只是FFT需要些功夫,其余都很快!書上介紹的是基2FFT,這個代碼網(wǎng)上到處都有,想提升自己的編程能力,就去嘗試編基4FFT,以及考慮基nFFT吧,祝大家好運(yùn)。</p><p> 1、時域?yàn)V波程序代碼</p><p> #include<stdio.h></p><p> #include<
19、math.h></p><p> #include"conv.cpp"</p><p> #include"dft.cpp"</p><p> #include"gyh.cpp"</p><p> #define T 200//************T表示x(t)點(diǎn)數(shù)
20、,R表示n(t)點(diǎn)數(shù)</p><p> #define R 60</p><p> void main()</p><p><b> {</b></p><p> int i,j,B=100;//*********************B表示貝塔的值</p><p><b>
21、 FILE *fp;</b></p><p> double A1=1.0,A2=0.8,A3=0.5;//********產(chǎn)生x(t)</p><p> double f1=25,f2=45,f3=5,f4=80;//******頻率取值</p><p> double data=0.004;//******************取樣點(diǎn)數(shù)<
22、;/p><p> double s[T],n[T], x[T],h[R],y[T+R-1];</p><p> double si[T]={0},s1[T]={0},s1i[T]={0},Fs[T]={0};</p><p> double ni[T]={0},n1[T]={0},n1i[T]={0},Fn[T]={0};</p><p>
23、 double xi[T]={0},x1[T]={0},x1i[T]={0},Fx[T]={0};</p><p> double hi[T]={0},h1[T]={0},h1i[T]={0},Fh[T]={0};</p><p> double y1[T+R-1]={0},yb[T+R-1]={0},yb1[T+R-1]={0},Fy[T+R-1]={0};</p>
24、<p> for(i=0;i<T;i++)</p><p><b> {</b></p><p> s[i]=A1*exp(-B*pow((i*data),2)) * sin(2*PI*f1*i*data) + A2*exp(-B*pow((i*data),2)) * sin(2*PI*f2*i*data);</p><p&g
25、t; n[i]=A3*(sin(2*PI*f3*i*data)+cos(2*PI*f4*i*data));</p><p> x[i]=s[i]+n[i];</p><p><b> }</b></p><p> //對s(t)進(jìn)行頻譜分析,用DFT</p><p> dft(s,si,s1,s1i,Fs,T,
26、1);</p><p> dft(n,ni,n1,n1i,Fn,T,1);</p><p> dft(x,ni,x1,x1i,Fx,T,1);</p><p><b> //統(tǒng)一導(dǎo)出</b></p><p> fp=fopen("D:\\sh\\time1\\snxFsFnFx1.txt",&
27、quot;w");</p><p> for(i=0;i<T;i++)</p><p> fprintf(fp,"%f\t%f\t%f\t%f\t%f\t%f\n",s[i],n[i],x[i],Fs[i],Fn[i],Fx[i]);</p><p> fclose(fp);</p><p><
28、b> //產(chǎn)生h(t)</b></p><p> float ff1=20,ff2=50;//*****************可以修改的h(t)參數(shù)</p><p> double w1,w2,dataw,w0;</p><p> w1=2*PI*ff1,w2=2*PI*ff2;</p><p> dataw=(
29、w2-w1)/2,w0=(w2+w1)/2;</p><p> h[0]=2*dataw/PI;</p><p> for(j=1;j<R;j++)</p><p><b> {</b></p><p> h[j]=(2.0/(PI*j*data))*cos(w0*j*data)*sin(dataw*j*d
30、ata);</p><p><b> }</b></p><p> dft(h,hi,h1,h1i,Fh,R,1);</p><p> gyh(Fh,R);</p><p> fp=fopen("D:\\sh\\time1\\hFh.txt","w");</p>
31、<p> for(j=0;j<R;j++)</p><p> fprintf(fp,"%f\t%f\n",h[j],Fh[j]);</p><p> fclose(fp);</p><p> //褶積濾波得到y(tǒng)(t)</p><p> con(x,h,y,T,R);</p>&l
32、t;p> //對y(t)作傅里葉變換</p><p> dft(y,y1,yb,yb1,Fy,T+R-1,1);</p><p> //導(dǎo)出y及頻譜Y(k)</p><p> fp=fopen("D:\\sh\\time1\\yFy1.txt","w");</p><p> for(i=
33、0;i<T+R-1;i++)</p><p> fprintf(fp,"%f\t%f\n",y[i],Fy[i]);</p><p> fclose(fp); </p><p> printf("\nover\n\n");}</p><p><b> 頻域?yàn)V波程序代碼:</
34、b></p><p> #include<stdio.h></p><p> #include<math.h></p><p> #include"fft.cpp"</p><p> #include"ifft.cpp"</p><p>
35、#define G 256</p><p> void main()</p><p><b> {</b></p><p> int i,B=100;</p><p> FILE *fp;//定義指針文件</p><p> double A1=1.0,A2=0.8,A3=0.5;//產(chǎn)生
36、x(t)</p><p> double f1=25,f2=45,f3=5,f4=80;//參數(shù)</p><p> double data=0.004;//抽樣間隔</p><p> double s[200],n[200];</p><p> double x[G]={0},x1[G]={0},h[G]={0},h1[G]={0},
37、y[G]={0},y1[G]={0};</p><p> double Fx[G]={0},Fh1[G]={0},Fh2[G]={0},Fy1[G]={0},Fy2[G]={0};</p><p> double Y1[G]={0},Y1i[G]={0},Y2[G]={0},Y2i[G]={0};</p><p> for(i=0;i<200;i++)&
38、lt;/p><p><b> {</b></p><p> s[i]=A1*exp(-B*pow((i*data),2)) * sin(2*PI*f1*i*data) + A2*exp(-B*pow((i*data),2)) * sin(2*PI*f2*i*data);</p><p> n[i]=A3*(sin(2*PI*f3*i*data
39、)+cos(2*PI*f4*i*data));</p><p> x[i]=s[i]+n[i];</p><p><b> }</b></p><p><b> //導(dǎo)出x[t]</b></p><p> fp=fopen("D:\\sh\\py\\x.txt",&quo
40、t;w");</p><p> for(i=0;i<G;i++)</p><p> fprintf(fp,"%f\n",x[i]);</p><p> fclose(fp);</p><p> //x[t]頻譜計算</p><p> fft(x,x1,Fx,G,1);<
41、;/p><p><b> //導(dǎo)出X(k)</b></p><p> fp=fopen("D:\\sh\\py\\Fx.txt","w");</p><p> for(i=0;i<G;i++)</p><p> fprintf(fp,"%f\n",Fx
42、[i]);</p><p> fclose(fp);</p><p><b> //處理h[t]</b></p><p> double dataf;</p><p> double m1,m2,m3,m4;</p><p> dataf=1.0/(data*G);</p>
43、<p> m1=20.0/dataf,m2=50.0/dataf;</p><p> m3=G-m2,m4=G-m1;</p><p><b> //計算,導(dǎo)出單門</b></p><p> for(i=0;i<G;i++)</p><p><b> {</b></
44、p><p> if(i>=int(m1)&&i<=int(m2))</p><p><b> Fh1[i]=1;</b></p><p> else Fh1[i]=0;</p><p><b> }</b></p><p><b>
45、 //計算,導(dǎo)出雙門</b></p><p> for(i=0;i<G;i++)</p><p><b> {</b></p><p> if((i>=int(m1)&&i<=int(m2))||(i>=int(m3)&&i<=int(m4)))</p>
46、<p><b> Fh2[i]=1;</b></p><p> else Fh2[i]=0;</p><p><b> }</b></p><p> fp=fopen("D:\\sh\\py\\Fh12.txt","w");</p><p&
47、gt; for(i=0;i<256;i++)</p><p> fprintf(fp,"%f\t%f\n",Fh1[i],Fh2[i]);</p><p> fclose(fp);</p><p> for(i=0;i<G;i++)//單門濾波</p><p><b> {</b>
48、;</p><p> Y1[i]=x[i]*Fh1[i];</p><p> Y1i[i]=x1[i]*Fh1[i];</p><p> Fy1[i]=sqrt(pow(Y1[i],2)+pow(Y1i[i],2));</p><p><b> }</b></p><p> for(i=
49、0;i<G;i++)//開雙門</p><p><b> {</b></p><p> Y2[i]=x[i]*Fh2[i];</p><p> Y2i[i]=x1[i]*Fh2[i];</p><p> Fy2[i]=sqrt(pow(Y2[i],2)+pow(Y2i[i],2));}</p>
50、<p> fp=fopen("D:\\sh\\py\\Fy12.txt","w");//導(dǎo)出單雙門</p><p> for(i=0;i<G;i++)</p><p> fprintf(fp,"%f\t%f\n",Fy1[i],Fy2[i]);</p><p> fclose(fp
51、);</p><p> //Y[k]作反變換IFFT,并且導(dǎo)出實(shí)部,虛步</p><p> ifft(Y1,Y1i,G,-1);</p><p> ifft(Y2,Y2i,G,-1);</p><p> fp=fopen("D:\\sh\\py\\yt12.txt","w");</p>
52、;<p> for(i=0;i<G;i++)</p><p> fprintf(fp,"%f\t%f\t%f\t%f\n",Y1[i],Y1i[i],Y2[i],Y2i[i]);</p><p> fclose(fp);</p><p> printf("\nover\n\n");}</p&g
53、t;<p><b> 相關(guān)程序代碼</b></p><p> #include<stdio.h></p><p> #include<math.h></p><p> #include"correl.cpp"</p><p> #define PI 3.
54、14159265</p><p> void main()</p><p><b> {</b></p><p><b> int i,j;</b></p><p> double A1=1.0,A2=0.8;</p><p> double f1=30,f2=50
55、;</p><p> double data=0.004,p=100;</p><p> double x[100]={0},y[150]={0},xy[249]={0},yx[249]={0};</p><p> double xx[199],yy[299],xyft[249];</p><p> for(i=0;i<100;
56、i++)</p><p> x[i]=A1*sin(2*PI*f1*i*data);</p><p> for(j=0;j<150;j++)//計算y(t)</p><p> y[j]=A2 * exp(-p*j*data*j*data)*sin(2*PI*f2*j*data);</p><p> correl(x,y,100,
57、150,xy);</p><p> correl(x,x,100,100,xx);</p><p> correl(y,y,150,150,yy);</p><p> correl(y,x,150,100,yx);</p><p> FILE *fp,*fp1,*fp2,*fp3,*fp4,*fp5,*fp6;//導(dǎo)出數(shù)據(jù)</p
58、><p> int i1,j1,k,l,m,n;</p><p> fp1=fopen("D:\\sh\\data\\x.txt","w");</p><p> fp2=fopen("D:\\sh\\data\\y.txt","w");</p><p> fp
59、3=fopen("D:\\sh\\data\\xy.txt","w");</p><p> fp4=fopen("D:\\sh\\data\\xx.txt","w");</p><p> fp5=fopen("D:\\sh\\data\\yx.txt","w");&l
60、t;/p><p> fp6=fopen("D:\\sh\\data\\yy.txt","w");</p><p> for(i=0;i<249;i++)</p><p> xyft[i]=yx[i];</p><p> fp=fopen("D:\\sh\\data\\xyt.txt&
61、quot;,"w");</p><p> for(i=0;i<249;i++)</p><p> fprintf(fp,"%f\n",xyft[i]);</p><p> fclose(fp);</p><p> for(i1=0;i1<100;i1++)</p>&l
62、t;p> fprintf(fp1,"%f\n",x[i1]);</p><p> fclose(fp1);</p><p> for(j1=0;j1<150;j1++)</p><p> fprintf(fp2,"%f\n",y[j1]);</p><p> fclose(fp2)
63、;</p><p> for(k=0;k<249;k++)</p><p> fprintf(fp3,"%f\n",xy[k]);</p><p> fclose(fp3);</p><p> for(l=0;l<199;l++)</p><p> fprintf(fp4,&q
64、uot;%f\n",xx[l]);</p><p> fclose(fp4);</p><p> for(m=0;m<249;m++)</p><p> fprintf(fp5,"%f\n",yx[m]);</p><p> fclose(fp5);</p><p> fo
65、r(n=0;n<299;n++)</p><p> fprintf(fp6,"%f\n",yy[n]);</p><p> fclose(fp6);}</p><p> 4、地震子波及頻譜分析</p><p> #include<stdio.h></p><p> #in
66、clude"conv.cpp"</p><p> #include"fft.cpp"</p><p> #include"uni.cpp"</p><p> #define V 64//*********宏定義的參數(shù),可以修改的點(diǎn)數(shù)</p><p> #define W 25
67、6</p><p> void main()</p><p><b> {</b></p><p><b> int i;</b></p><p><b> FILE *fp;</b></p><p> double A1=1,f=35,a=1
68、00;//********************a代表阿爾法α</p><p> double data=0.004;//************************* 抽樣間隔</p><p> double b[V]={0},bi[V]={0},Fb[V]={0},ks[200]={0};</p><p> double sz[W]={0},s[20
69、0]={0},szi[W]={0},Fsz[W]={0};</p><p> double x[W]={0},xi[W]={0},Fx[W]={0},n[200]={0};</p><p> double xwp[V];</p><p> for(i=0;i<41;i++)</p><p> b[i]=A1*exp(-a*i*d
70、ata)*sin(2*PI*f*i*data);</p><p> //*****產(chǎn)生ξ(t)</p><p> ks[29]=0.2,ks[64]=0.4,ks[80]=0.15,ks[102]=0.5,ks[114]=0.35,ks[145]=0.1,ks[156]=0.2;</p><p> fp=fopen("D:\\da\\b.txt&qu
71、ot;,"w");</p><p> for(i=0;i<V;i++)</p><p> fprintf(fp,"%f\n",b[i]);</p><p> fclose(fp);</p><p> fp=fopen("D:\\da\\ks.txt","w&q
72、uot;);</p><p> for(i=0;i<200;i++)</p><p> fprintf(fp,"%f\n",ks[i]);</p><p> fclose(fp);</p><p> con(b,ks,sz,41,200);</p><p> fp=fopen(&qu
73、ot;D:\\da\\s.txt","w");</p><p> for(i=0;i<W;i++)</p><p> fprintf(fp,"%f\n",sz[i]);</p><p> fclose(fp);</p><p> for(i=0;i<200;i++)//**
74、*****************甩掉后40個樣點(diǎn)</p><p> s[i]=sz[i];</p><p> uni(-0.4,0.4,200,n);//*****************產(chǎn)生隨機(jī)數(shù)</p><p> fp=fopen("D:\\da\\n.txt","w");</p><p>
75、 for(i=0;i<200;i++)</p><p> fprintf(fp,"%f\n",n[i]);</p><p> fclose(fp);</p><p> for(i=0;i<200;i++)</p><p> x[i]=s[i]+n[i];</p><p> f
76、p=fopen("D:\\da\\x.txt","w");</p><p> for(i=0;i<W;i++)</p><p> fprintf(fp,"%f\n",x[i]);</p><p> fclose(fp);</p><p> fft(sz,szi,Fsz,
77、W,1);//**********</p><p> fft(b,bi,Fb,V,1);//************************用fft對b[t],x[t]頻譜分析</p><p> fft(x,xi,Fx,W,1);</p><p> fp=fopen("D:\\da\\Fs.txt","w");</
78、p><p> for(i=0;i<W;i++)</p><p> fprintf(fp,"%f\n",Fsz[i]);</p><p> fclose(fp);</p><p> fp=fopen("D:\\da\\Fb.txt","w");</p><
79、p> for(i=0;i<V;i++)</p><p> fprintf(fp,"%f\n",Fb[i]);</p><p> fclose(fp);</p><p> fp=fopen("D:\\da\\Fx.txt","w");</p><p> for(i
80、=0;i<W;i++)</p><p> fprintf(fp,"%f\n",Fx[i]);</p><p> fclose(fp);</p><p> for(i=0;i<V;i++)</p><p> xwp[i]=atan(bi[i]/b[i]);</p><p> fp
81、=fopen("D:\\da\\xw.txt","w");</p><p> for(i=0;i<V;i++)</p><p> fprintf(fp,"%f\n",xwp[i]);</p><p> fclose(fp);}</p><p><b> 5、信
82、噪比</b></p><p> #include<stdio.h></p><p> #include<math.h></p><p> #include"conv.cpp"</p><p> #include"uni.cpp"</p><
83、p> #define PI 3.14159265</p><p> #define V 64</p><p> #define W 256</p><p> void main()</p><p><b> {</b></p><p><b> int i;</b
84、></p><p> double A1=1,f=35,a=100;</p><p> double data=0.004,Sr,tps=0,tpn=0;</p><p> double b[V]={0},sz[240]={0},s[200]={0},ks[200]={0};</p><p> double x[W]={0},n
85、[200]={0};</p><p> for(i=0;i<41;i++)</p><p> b[i]=A1*exp(-a*i*data)*sin(2*PI*f*i*data);</p><p> ks[29]=0.2,ks[64]=0.4,ks[80]=0.15;</p><p> ks[102]=0.5,ks[114]=0.
86、35,ks[145]=0.1,ks[156]=0.2;</p><p> con(b,ks,sz,41,200);</p><p> for(i=0;i<200;i++)//甩掉后40個樣點(diǎn)</p><p> s[i]=sz[i];</p><p> uni(-0.4,0.4,200,n);//隨機(jī)數(shù)</p>&l
87、t;p> for(i=0;i<200;i++)</p><p> x[i]=s[i]+n[i];</p><p> for(i=0;i<200;i++)//信噪比計算</p><p><b> {</b></p><p> tps+=pow(s[i],2);</p><p&
88、gt; tpn+=pow(n[i],2);</p><p><b> }</b></p><p> Sr=tps/tpn;</p><p> printf("SNR1=%f\n",Sr);}</p><p><b> 補(bǔ)0影響</b></p><p&
89、gt; #include<stdio.h></p><p> #include"fft.cpp"</p><p> #define V 64</p><p> void main()</p><p><b> {</b></p><p><b>
90、 int i;</b></p><p><b> FILE *fp;</b></p><p> double A1=1,f=35,a=100;</p><p> double data=0.004;</p><p> double b[V]={0},bi[V]={0},Fb[V]={0};</
91、p><p> for(i=0;i<41;i++)</p><p> b[i]=A1*exp(-a*i*data)*sin(2*PI*f*i*data);</p><p> fp=fopen("D:\\daa\\b1.txt","w");</p><p> for(i=0;i<V;i++)
92、</p><p> fprintf(fp,"%f\n",b[i]);</p><p> fclose(fp);</p><p> fft(b,bi,Fb,V,1);//**************用fft對b[t]頻譜分析</p><p> fp=fopen("D:\\daa\\Fb1.txt"
93、,"w");</p><p> for(i=0;i<V;i++)</p><p> fprintf(fp,"%f\n",Fb[i]);</p><p> fclose(fp);</p><p><b> }</b></p><p> 《最后》
94、所用到的子程序</p><p> 相關(guān):void correl(double x[],double y[],int N,int M,double z[])</p><p><b> {</b></p><p> int i,j,l,ts=0;//ts代表相關(guān)序列的第一個數(shù)的序列號</p><p> double
95、t=0;</p><p><b> l=1-M;</b></p><p> for(i=-M+1;i<N;i++)</p><p><b> {</b></p><p> for(j=0;j<N;j++)</p><p> if(j-i>=0 &a
96、mp;& (j-i)<M)</p><p> t+=x[j]*y[j-i];</p><p> z[i+M-1]=t;</p><p><b> t=0;</b></p><p><b> }</b></p><p> printf("\
97、n**********\n");</p><p> printf("ts=%d\n",l);</p><p> printf("**********\n");}</p><p> 褶積://傳入數(shù)組1,2以及存儲數(shù)組3;1,2的長度</p><p> void con(double a
98、[],double b[],double c[],int M,int L)</p><p><b> {</b></p><p> int i,j,N;</p><p><b> N=M+L-1;</b></p><p> for(i=0;i<N;i++)</p><
99、;p><b> {</b></p><p> double tp=0.0;</p><p> for(j=0;j<M;j++)</p><p><b> {</b></p><p> if((i-j)>=0&&(i-j)<L)</p>
100、<p> tp+=a[j]*b[i-j];</p><p><b> }</b></p><p> c[i]=tp,tp=0.0;</p><p><b> }</b></p><p><b> }</b></p><p> DFT
101、://dft子函數(shù),傳遞實(shí)部,虛部,存儲sx數(shù)組,振幅數(shù)組。點(diǎn)數(shù),正反</p><p> #include<math.h></p><p> #define PI 3.14159265</p><p> void dft(double x[],double y[],double x1[],double y1[],double Fn[],int N,
102、int sign)</p><p><b> {</b></p><p><b> int i,j;</b></p><p> double Q,D,C,c,s;</p><p><b> Q=2*PI/N;</b></p><p> for(
103、i=0;i<N;i++)</p><p><b> {</b></p><p> for(j=0;j<N;j++)</p><p><b> {</b></p><p><b> D=Q*i*j;</b></p><p><b&
104、gt; c=cos(D);</b></p><p> s=sin(D)*sign;</p><p> x1[i]+=c*x[j] + s*y[j];</p><p> y1[i]+=c*y[j] - s*x[j];</p><p><b> }</b></p><p><
105、;b> }</b></p><p> if(sign==-1)</p><p><b> {</b></p><p><b> C=1.0/N;</b></p><p> for(i=0;i<N;i++)</p><p><b>
106、 {</b></p><p> x1[i]=C*x1[i],y1[i]=C*y1[i];</p><p><b> }}</b></p><p> for(i=0;i<N;i++)</p><p> Fn[i]=sqrt(pow(x1[i],2) + pow(y1[i],2));</p&g
107、t;<p><b> }</b></p><p> FFT://fft子函數(shù),傳遞實(shí)部,虛部,存儲振幅數(shù)組,點(diǎn)數(shù),正反</p><p> #include<math.h></p><p> #define PI 3.14159265</p><p> void fft(double x
108、[],double y[],double Fn[],int N,int sign)</p><p><b> {</b></p><p> int i,j,r,m1,m2,m3,m4,k1,k2,l,k;</p><p> double u,v; //暫時存儲中間實(shí)部與虛部</p><p> double
109、 c,s,tr,ti,C;</p><p> l=(int)(log10(N)/log10(2));//計算l的值</p><p> for(j=0,i=0;i<N-1;i++)//變址運(yùn)算,倒序,采用雷德SF</p><p><b> {</b></p><p><b> if(i<j)&
110、lt;/b></p><p><b> {</b></p><p> tr=x[j];ti=y[j];x[j]=x[i];y[j]=y[i];x[i]=tr;y[i]=ti;</p><p><b> }</b></p><p><b> k=N/2;</b>&l
111、t;/p><p> while(k<(j+1))</p><p><b> {</b></p><p><b> j=j-k;</b></p><p><b> k=k/2;</b></p><p><b> }</b>
112、</p><p><b> j=j+k;</b></p><p><b> }</b></p><p> for(i=1;i<=l;i++)//第一重循環(huán),遞推迭代次數(shù)</p><p><b> {</b></p><p> m1=int
113、(pow(2,i-1));</p><p><b> m2=2*m1;</b></p><p><b> m3=N/m2;</b></p><p> for(j=0;j<m3;j++)</p><p><b> {</b></p><p>
114、<b> m4=j*m2;</b></p><p> for(r=0;r<m1;r++)</p><p><b> {</b></p><p><b> k1=m4+r;</b></p><p><b> k2=k1+m1;</b><
115、/p><p> c=cos(2*PI*r/m2);</p><p> s=sign*sin(2*PI*r/m2);</p><p> u=x[k2]*c + y[k2]*s;</p><p> v=y[k2]*c - x[k2]*s;</p><p> x[k2]=x[k1]-u;y[k2]=y[k1]-v;&l
116、t;/p><p> x[k1]=x[k1]+u;y[k1]=y[k1]+v;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(sign==-1)</p
117、><p><b> {</b></p><p><b> C=1.0/N;</b></p><p> for(i=0;i<N;i++)</p><p><b> {</b></p><p> x[i]=C*x[i];</p>&
118、lt;p> y[i]=C*y[i];</p><p><b> }</b></p><p><b> }</b></p><p> for(i=0;i<N;i++)</p><p><b> {</b></p><p> Fn[i
119、]=sqrt(pow(x[i],2) + pow(y[i],2));</p><p><b> } </b></p><p><b> }</b></p><p> void gyh(double x[],int N)</p><p><b> {</b></p
120、><p><b> int i,j;</b></p><p> double t=0;</p><p> for(i=0;i<N;i++)</p><p> if(t<x[i])</p><p><b> t=x[i];</b></p><
121、;p> for(j=0;j<N;j++)</p><p> {x[j]=x[j]/t;}}</p><p><b> 隨機(jī)數(shù):</b></p><p> //隨機(jī)數(shù)子函數(shù),需要傳遞區(qū)間,產(chǎn)生個數(shù),以及存儲數(shù)組</p><p> #include<stdlib.h></p>
122、<p> #include<time.h></p><p> void uni(double x,double y,int Z,double a[])</p><p><b> {</b></p><p><b> int i;</b></p><p> unsig
123、ned seed=time(NULL);</p><p> printf("seed=%d\n",seed);</p><p> printf("\n");</p><p> srand(seed);</p><p> for(i=0;i<Z;i++)</p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計--圖像處理
- 信號分析與處理課程設(shè)計
- 信號處理分析課程設(shè)計
- c語言課程設(shè)計--數(shù)據(jù)集合處理
- 【課程設(shè)計】c語言課程設(shè)計
- c語言課程設(shè)計報告--符串處理
- c語言課程設(shè)計
- 信號處理分析課程設(shè)計報告
- c語言課程設(shè)計
- c語言課程設(shè)計
- c語言課程設(shè)計-文件處理和統(tǒng)計頻率
- c語言課程設(shè)計--c語言投票程序
- c語言課程設(shè)計課程報
- c語言課程設(shè)計題目
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計--迷宮
- c語言課程設(shè)計 (2)
- c語言課程設(shè)計范例
- 《c語言課程設(shè)計》課程設(shè)計--數(shù)據(jù)的加密與解密
評論
0/150
提交評論