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

📄 加噪1周期.txt

📁 CCS环境下
💻 TXT
字号:

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<math.h>

#define a0  0
#define a1  7
#define a2  10

#define N  8
#define M  105
#define L  150


#pragma DATA_SECTION(_Ijuan,"data_buf1")
#pragma DATA_SECTION(_Qjuan,"data_buf2")
#pragma DATA_SECTION(OUT,"data_buf3")

int _cosx[N]  ,  _sinx[N];
int _I[M] , _Q[M] , _FI[M] , _FQ[M];
int n_I[L] ,  n_Q[L] , Zs[L];
int _Ijuan[M+L-1] ,  _Qjuan[M+L-1] , OUT[M+L-1];

/*巴克码*/
int code[13]={1,1,1,1,1,-1,-1,1,1,-1,1,-1,1};
int i , j;

void Iroad(int _I[M])
{
  /*通过查表等到cos函数*/ 
  _cosx[0]=a2  ;  _cosx[1]=a1  ;  _cosx[2]=a0  ;  _cosx[3]=-a1 ;
  _cosx[4]=-a2 ;  _cosx[5]=-a1 ;  _cosx[6]=a0  ;  _cosx[7]=a1  ; 

  for(j=0; j<N; j++)
    {
      _I[j]=code[0]*_cosx[j];
      _I[j+8]=code[1]*_cosx[j];
      _I[j+16]=code[2]*_cosx[j];
      _I[j+24]=code[3]*_cosx[j];
      _I[j+32]=code[4]*_cosx[j];
      
      _I[j+40]=code[5]*_cosx[j];
      _I[j+48]=code[6]*_cosx[j];
     
      _I[j+56]=code[7]*_cosx[j];
      _I[j+64]=code[8]*_cosx[j];
    
      _I[j+72]=code[9]*_cosx[j];
      _I[j+80]=code[10]*_cosx[j];
      
      _I[j+88]=code[11]*_cosx[j];
      _I[j+96]=code[12]*_cosx[j];
      _I[104]=a2;
    }    
}


void Qroad(int _Q[M])
{
  /*通过查表等到sin函数*/ 
  _sinx[0]=a0  ;  _sinx[1]=a1  ;  _sinx[2]=a2  ;  _sinx[3]=a1 ;
  _sinx[4]=a0 ;  _sinx[5]=-a1 ;  _sinx[6]=-a2  ;  _sinx[7]=-a1  ; 

  for(j=0; j<8; j++)
    {
      _Q[j]=code[0]*_sinx[j];
      _Q[j+8]=code[1]*_sinx[j];
      _Q[j+16]=code[2]*_sinx[j];
      _Q[j+24]=code[3]*_sinx[j];
      _Q[j+32]=code[4]*_sinx[j];
      
      _Q[j+40]=code[5]*_sinx[j];
      _Q[j+48]=code[6]*_sinx[j];
     
      _Q[j+56]=code[7]*_sinx[j];
      _Q[j+64]=code[8]*_sinx[j];
    
      _Q[j+72]=code[9]*_sinx[j];
      _Q[j+80]=code[10]*_sinx[j];
      
      _Q[j+88]=code[11]*_sinx[j];
      _Q[j+96]=code[12]*_sinx[j];
      _Q[104]=a0;
    }    
}

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


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




void main(void)                /*主函数*/
{
    int d;
    d=L-M;
    Iroad(_I);           /*调用I路信号产生函数*/
    Qroad(_Q);           /*调用Q路信号产生函数*/
   
    for(i=0;i<M;i++)        
    {
       _FI[i]=_I[M-i];        /*序列倒置*/ 
       _FQ[i]=_Q[M-i];
       n_I[i+d]=_I[i];        /*加入延时*/
       n_Q[i+d]=_Q[i];
    }
    
   memset(Zs,0,L);             /*加入噪声*/
   srand((unsigned)time(NULL));  
   for(i=0;i<L;i++)
   {        
      Zs[i]=rand()%10-5; 
      n_I[i]=n_I[i]+Zs[i];
      n_Q[i]=n_Q[i]+Zs[i];          
   }
        
    conI(n_I,_FI,_Ijuan);       /*I路卷积*/
    conQ(n_Q,_FQ,_Qjuan);       /*Q路卷积*/       
                            
    for(i=0;i<L+M-1;i++)         /*求模*/
    {
        OUT[i]=_Ijuan[i]*_Ijuan[i]+_Qjuan[i]*_Qjuan[i];
        OUT[i]=sqrt(OUT[i]);      
    }        
}














⌨️ 快捷键说明

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