⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fourxiang.c

📁 CCS环境下
💻 C
字号:

#include<math.h>

#define a0  0
#define a1  90
#define a2  127    /*8bit量化 */


#define N  8
#define M  1041

#pragma DATA_SECTION(OUT,"bufffer1")

int _cosx1[N]  ,  _cosx2[N] , _cosx3[N] , _cosx4[N];
int tc1[10*N] , tc2[10*N] , tc3[10*N] , tc4[10*N] ;
int _I[M] , _Q[M] , _FI[M] , _FQ[M];
int _Ijuan[2*M-1] ,  _Qjuan[2*M-1] , OUT[2*M-1];


int i , j;


void signal(int _I[M] , int _Q[M])
{
  /*通过查表等到cos函数*/ 
  _cosx1[0]=a2  ;  _cosx1[1]=a1  ;  _cosx1[2]=a0  ;  _cosx1[3]=-a1 ;
  _cosx1[4]=-a2 ;  _cosx1[5]=-a1 ;  _cosx1[6]=a0  ;  _cosx1[7]=a1  ; 
  
  _cosx2[0]=a0  ;  _cosx2[1]=-a1  ;  _cosx2[2]=-a2  ;  _cosx2[3]=-a1 ;
  _cosx2[4]=a0  ;  _cosx2[5]=a1   ;  _cosx2[6]=a2   ;  _cosx2[7]=a1  ; 
  
  _cosx3[0]=-a2  ;  _cosx3[1]=-a1  ;  _cosx3[2]=a0  ;  _cosx3[3]=a1 ;
  _cosx3[4]=a2   ;  _cosx3[5]=a1   ;  _cosx3[6]=a0  ;  _cosx3[7]=-a1  ; 
  
  _cosx4[0]=a0  ;  _cosx4[1]=a1  ;  _cosx4[2]=a2   ;  _cosx4[3]=a1 ;
  _cosx4[4]=a0  ;  _cosx4[5]=-a1 ;  _cosx4[6]=-a2  ;  _cosx4[7]=-a1  ; 
  
 /*10周期的初相位为0*/
   for(j=0;j<N;j++)
    {
      tc1[j]=_cosx1[j];
      tc1[j+8]=_cosx1[j];
      tc1[j+16]=_cosx1[j];
      tc1[j+24]=_cosx1[j];
      tc1[j+32]=_cosx1[j];     
      tc1[j+40]=_cosx1[j];
      tc1[j+48]=_cosx1[j];     
      tc1[j+56]=_cosx1[j];
      tc1[j+64]=_cosx1[j];   
      tc1[j+72]=_cosx1[j];       
    }

 /*10周期的初相位为90*/
   for(j=0;j<N;j++)
    {
      tc2[j]=_cosx2[j];
      tc2[j+8]=_cosx2[j];
      tc2[j+16]=_cosx2[j];
      tc2[j+24]=_cosx2[j];
      tc2[j+32]=_cosx2[j];     
      tc2[j+40]=_cosx2[j];
      tc2[j+48]=_cosx2[j];     
      tc2[j+56]=_cosx2[j];
      tc2[j+64]=_cosx2[j];   
      tc2[j+72]=_cosx2[j];       
    }
    
/*10周期的初相位为180*/
   for(j=0;j<N;j++)
    {
      tc3[j]=_cosx3[j];
      tc3[j+8]=_cosx3[j];
      tc3[j+16]=_cosx3[j];
      tc3[j+24]=_cosx3[j];
      tc3[j+32]=_cosx3[j];     
      tc3[j+40]=_cosx3[j];
      tc3[j+48]=_cosx3[j];     
      tc3[j+56]=_cosx3[j];
      tc3[j+64]=_cosx3[j];   
      tc3[j+72]=_cosx3[j];       
    }
    
/*10周期的初相位为270*/
   for(j=0;j<N;j++)
    {
      tc4[j]=_cosx4[j];
      tc4[j+8]=_cosx4[j];
      tc4[j+16]=_cosx4[j];
      tc4[j+24]=_cosx4[j];
      tc4[j+32]=_cosx4[j];     
      tc4[j+40]=_cosx4[j];
      tc4[j+48]=_cosx4[j];     
      tc4[j+56]=_cosx4[j];
      tc4[j+64]=_cosx4[j];   
      tc4[j+72]=_cosx4[j];       
    }


  for(j=0; j<10*N; j++)
    {
      _I[j]=tc1[j];
      _I[j+80]=tc2[j];
      _I[j+160]=tc3[j];
      _I[j+240]=tc4[j];
      _I[j+320]=tc1[j];      
      _I[j+400]=tc4[j];
      _I[j+480]=tc1[j];    
      _I[j+560]=tc4[j];
      _I[j+640]=tc1[j];    
      _I[j+720]=tc4[j];
      _I[j+800]=tc3[j];      
      _I[j+880]=tc2[j];
      _I[j+960]=tc1[j];
      _I[1040]=a2;
    }     

  for(j=0; j<10*N; j++)
    {
      _Q[j]=tc4[j];
      _Q[j+80]=tc1[j];
      _Q[j+160]=tc2[j];
      _Q[j+240]=tc3[j];
      _Q[j+320]=tc4[j];     
      _Q[j+400]=tc3[j];
      _Q[j+480]=tc4[j];     
      _Q[j+560]=tc3[j];
      _Q[j+640]=tc4[j];    
      _Q[j+720]=tc3[j];
      _Q[j+800]=tc2[j];      
      _Q[j+880]=tc1[j];
      _Q[j+960]=tc4[j];
      _Q[1040]=a0;
    }    
}

void conI(int a[M],int b[M],int _Ijuan[2*M-1])        /*卷积函数*/
{
      
    for(i=0;i<=2*M-2;i++)
    {
       long int t=0;
       for(j=0;j<=M-1;j++)
         {
         if(i-j>=0&&i-j<=M-1)
            t+=a[j]*b[i-j];
         }
       _Ijuan[i]=t*0.001;
    }
}


void conQ(int c[M],int d[M],int _Qjuan[2*M-1])        /*卷积函数*/
{
      
    for(i=0;i<=2*M-2;i++)
    {
       long int t=0;
       for(j=0;j<=M-1;j++)
         {
         if(i-j>=0&&i-j<=M-1)
            t+=c[j]*d[i-j];
         }
       _Qjuan[i]=t*0.001;
    }
}




void main(void)                /*主函数*/
{

    signal(_I , _Q);           /*调用I路和Q路信号产生函数*/

    
    
    for(i=0;i<M;i++)        /*序列倒置*/
    {
       _FI[i]=_I[M-i];         
       _FQ[i]=_Q[M-i];

    }
        
    conI(_I,_FI,_Ijuan);       /*I路卷积*/
    conQ(_Q,_FQ,_Qjuan);       /*Q路卷积*/  
          
    for(i=0;i<2*M-1;i++)
    {
        OUT[i]=_Ijuan[i]*0.01*_Ijuan[i]*0.01+_Qjuan[i]*0.01*_Qjuan[i]*0.01;
        OUT[i]=10*sqrt(OUT[i]);      
    }      
   
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -