C语言实现数字信号处理算法.doc
《C语言实现数字信号处理算法.doc》由会员分享,可在线阅读,更多相关《C语言实现数字信号处理算法.doc(13页珍藏版)》请在三一文库上搜索。
1、中I屮:宁技术丿、宁电JT.F旳信息科学广媒体通伫3、 (Copyright 2000)附录A C语言实现数字信号处理算法附录A1 BC下复数类型的实现木部分内容可以在 hg:/202.3X.75.33/ds)/C/Com【lcxUsc.cpp 获得。1、利用BC提供的复数支持/BC中便用复数类型使用小例(ComplexUse.Cpp文件、林include ciosireain.h林include <complcx.h>int main(void)double x = 3.1. y = 4.2;complex z = complex(x.y):cout« ”z = u
2、171; z « W;cout « ” and imaginary real part = ” « imag(z)« "W;cout « "z has complex conjugate = M « conj(z) « * n”;return 0;2、定义复数类,填写相应成员函数/C中的芟数类型调用时可能不是年帘好用,叮门U怎义复数熬ComphxUse.Cpp文件)class Complex!public:Complex()Coinplex( float re. float im );float r()r
3、eturn real:;float i()return imag;float inod() return sq rt (re al *real+i mag *i n)ag);Complex operator+( Complex &other ):Complex operator Complex &othcr);Complex operator4c( Complex &other );Complex operator/( Complex &olher );private:float real, imag: J/ Operator overloaded using
4、a member fitnetionComplex:Complex( float re.float iin)real=re:imag=im:;Complex Complex:operator+( Complex &other )return Complex( real + other.real, imag + other.imag );Complex Complex:operator Complex &other)return Complex( real - other.real. imag other.imag );Complex Complex:operator*( Com
5、plex &other )float x.y;x=real*other.real-imag*other.imag;y=real other.i mag+imag *other. real;return Complex( x,y):Complex Complex:operator/( Complex &olhcr )float x.yj;l=othcr.realother.real+otl)er.iinag*other.imag:x=real*other.real+imag*other.imag:y=other. real*i mag- real *other.i mag:x=x
6、/l;y=y/l;return Complex(x.y);附录A2 BC下的绘图木部分内容可以右 htp:/2O2.38.75.33/dsp/C/PStBYBC.cpp 获得。1、通用绘图函数的有关说明(1) 函数输入参数说明left :绘图区的左上角横坐标top :绘图区的左上角纵坐标right:绘图区的右卜角横坐标bottom :绘图区的右卜角纵坐标f:需要绘制图形的数组length: f数组的长度(2) 函数调用示例在以(10.5)为庄上角坐标,(200.240)为右下角坐标的区域内绘制数组x的图形,数组氏度为10Plot(10.5,200,240.xJ0);BC图形程序盂耍“BC安装h
7、l录bgiegavga.bgi"文件支持如果您在阅读过程M1发现疏涓和iJi误.诘您尽快和编者取得联系nclwork cxh中国科学技术人宁电f息科学 广媒体通伫®、 (Copyright 2000)2、通用绘图函数void Plot(int leftjnt lop,ini right.int bottontdouble %int length)int n:int Left.Top.RightBottom.Mid:double x_unil_lcngih.y_unil_lcngih.max= 1.0;for(n=begin:n<=end;n+) /begin和end我
8、示数纟H F标的起始值和结束值 if(max<fabs(Hn|)max=fabs(fn|):Left=left+5:Top=top+5:Right=right-5:Bottom=bottom-5:MidM Bottom+Top)/2;x_unit_lcngth=(Right-Lcft)/(N-f-2);y_unit_length=( Bottom-Mid )/max;int gdriver = DETECT, gmode:initgraph(&gdriver. &gmode."”):rectangle(left.top.right.botto!n);setcol
9、or( YELLOW):setcolor(GREEN):int x;x=Lcfl+x_unil_lcnglh/2;n=0:while(n<length) line(x.Mid.x.Mid-lnay_unit_length);x+=x_unit_length;n-M-;setcolor( LIGHTGRAY):getch();closegraphO;附录A3傅立叶变换有关算法本部分内容可以在 hg:2O2.3&75.33/dsD/C/PFT-FFT.cDD 获得。1、傅立叶变换数值计算函数/* 输入参数:f :击要进疔傅立叶变换的数值序列N :输入序列的长度M :频诰分析的频点数r
10、esult:傅立叶变换的结果(蚁数序列)调用示例:M=100;DSFT(f0.N.MF);*/void DSFT(double N.int M,complex *result)int k.n;double omega.delta_omega:delta_onwga=2*yLPI/M;omega=0.0;for(k=0;k<M:k+)result(k=complex(0.0.0.0):for(n=0:n<N:n+)resultk+=f(n*exp(complex(0,-1 )*omega#n);oinega+=deka_omcga:2、卷积计算函数/ 参数说明fl:序列一:fl_bc
11、gin:序列一开始下标:fl_end:序列一结束下标:f2:序列二:f2_begin:序列二开始下标:f2_end:序列二结束下标f :存放结果序列:begin: (f放结果序列开始卜标:end :存放结果序列结束下标调用示例:JuanJi(fl .0.10,f2.0.3.f3.&begin.&end):/void JuanJi(double *fl,int fl_begin.ini fl_end.double *f2.ini f2_begin,int f2_end.double *f.int f_begin.intint m.n.i.begin.end:*f_begin=(f
12、i_begin<f2_begin)?fl_begin:f2_begin:*f_end=*f_bcgin+fl_end-fl_begin+t2_end-f2_begin;for( i=0.n=*Lbegin:n<=*f_cnd:n+. i+) begin=(n-f2_end>fl_begin)?(n-f2_end):fl_begin;end=(n-f2_begin<fl_end)?(n-f2_begin):fl_end:ti|=0:for( m=begin :in<=end: in+) fli+=fln】-fl_begin*f2(nm-f2_bcgin;3、FFT变
13、换函数/ 参数说明:xxx :需要进行变换的数组: N :长度:FFtorlFFT :进行正变换或反变换的指示参数调用示例:如果您在阅读过程中发现疏湄和错谋诸您尽快和编石取得联系 cxh中国科宁技术人7电了丁程巧信息科学系:coP>Ilghi“()(),for( i= 1: i <=256:i+=2) xxxiJ=1.0;xxx1.3.57.is real partxxxi+l=0.0;/xxx24.6& is image partFFT(xxxJ2&1);*/#definc SXVAP(x.y) (double temp=(x):(x)=(y);(y)=temp:
14、void FFT(double xxx(Jnt Mini FFTorlFFT)/*FFT 1 IFFT -1*/ double temp9tempntempi;double wtemp.wr.wpr.wpi.wi.theta;int n.mmaxmq jstep.p;n=N«l; q=l;for(p= 1 :pvn:p+=2)if(q>P)SWAP(xxxq.xxxp): SWAP(xxx|q+l J.xxx|p+1);)m=n»l:while(m>=2&&q >m) q=m:m»= 1:q+=m:mmax=2:while(n&g
15、t;mmax)istep=2*minax;theta=2.0*M_PI/(FFTorIFFT*mmax): wtemp=sin(double)(0.5*theta); wpr=-2.0*uiemp*wtemp;wpi=sin(double)theta):for( wr= 1.0.wi=O.O jn= 1 un<minax;m+=2) fortp=m;p<=n:p+=istep)q=p+mmax: tempr=wr*xxxq-wixxxq+l ; tempi=wr*xxxq+l +wi#xxxq: xxxq=xxxp| 2mpr: xxx(q+l |=xxx(p+l J-tempi;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 数字信号 处理 算法
链接地址:https://www.31doc.com/p-12460411.html