[cpp]view plain copy
1. typedefstruct
2. {
3. doubleReal_part;
4. doubleImag_Part;
5. }COMPLEX;
6.
7.
8. COMPLEXpoles[N];
9.
10. for(k=0;k<=((2*N)-1);k++)
11. {
12. if(Cotoff*cos((k+dk)*(pi/N))<0)
13. {
14. poles[count].Real_part=-Cotoff*cos((k+dk)*(pi/N));
15. poles[count].Imag_Part=-Cotoff*sin((k+dk)*(pi/N));
16. count++;
17. if(count==N)break;
18. }
19. }
计算出稳定的极点之后,就可以进行传递函数的计算了。传递的函数的计算,就像下
式一样
这里,为了得到模拟滤波器的系数,需要将分母乘开。很显然,这里的极点不一定是整数,
或者来说,这里的乘开需要做复数运算。其复数的乘法代码如下,
[cpp]view plain copy
1. intComplex_Multiple(COMPLEXa,COMPLEXb,
2. double*Res_Real,double*Res_Imag)
3.
4. {
5. *(Res_Real)=(a.Real_part)*(b.Real_part)-(a.Imag_Part)*(b.I
mag_Part);
6. *(Res_Imag)=(a.Imag_Part)*(b.Real_part)+(a.Real_part)*(b.Im
ag_Part);
评论15