📄 加噪1周期.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 + -