?? despreadspectrum.cpp
字號:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
int *despreadspectrum(int *string_despreadspectrum)
{
int *pi = (int *)malloc(384*64*sizeof(int));
int *pq = (int *)malloc(384*64*sizeof(int));
int *pi_ss = (int *)malloc((384*64)*sizeof(int)); //WALSH調制后 I信道
int *pq_ss = (int *)malloc((384*64)*sizeof(int)); //WALSH調制后 Q信道
int scode_i_generator[15]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //短碼發生器初始值I
int scode_q_generator[15]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //短碼發生器初始值Q
int *pn_i =(int *)malloc(384*64*sizeof(int)); //生成的短碼 I
int *pn_q =(int *)malloc(384*64*sizeof(int)); //生成的短碼 Q
static int string_afterdess[768]; //前半為I后半為Q
int i=0;
int j=0;
int a=0;
for(i=0;i<=384*64-1;i++)
{
*(pi+i)=*(string_despreadspectrum+i);
}
for(i=0;i<=384*64-1;i++)
{
*(pq+i)=*(string_despreadspectrum+384*64+i);
}
for(i=0;i<=768*32-1;i++) //I信道的短PN碼
{
*(pn_i+i)=scode_i_generator[14]; //生成短碼
a=scode_i_generator[14]; //寄存器移位
for(j=14;j>=1;j--)
{
scode_i_generator[j]=scode_i_generator[j-1];
}
scode_i_generator[0]=a;
for(j=0;j<=14;j++)
{
if(j==5||j==7||j==8||j==9||j==13) //多項式所包含項
{
scode_i_generator[j]=scode_i_generator[j]^a;
}
//多項式不包含項
}
}
for(i=0;i<=768*32-1;i++) //Q信道的短PN碼
{
*(pn_q+i)=scode_q_generator[14]; //生成短碼
a=scode_q_generator[14]; //寄存器移位
for(j=14;j>=1;j--)
{
scode_q_generator[j]=scode_q_generator[j-1];
}
scode_q_generator[0]=a;
for(j=0;j<=14;j++)
{
if(j==3||j==4||j==5||j==6||j==10||j==11||j==12) //多項式所包含項
{
scode_q_generator[j]=scode_q_generator[j]^a;
}
//多項式不包含項
}
}
j=0;
for(i=0;i<=768*32-1;i++) //短碼進行符號映射 I
{
if(*(pn_i+i)==0)
{
*(pn_i+i)=1;
}
else
{
*(pn_i+i)=-1;
}
}
for(i=0;i<=768*32-1;i++) // 短碼進行符號映射 Q
{
if(*(pn_q+i)==0)
{
*(pn_q+i)=1;
}
else
{
*(pn_q+i)=-1;
}
}
for(i=0;i<=768*32-1;i++) // 解擾
{
*(pi_ss+i)=(*(pi+i) * *(pn_i+i) + *(pq+i) * *(pn_q+i))/(*(pn_i+i) * *(pn_i+i) + *(pn_q+i) * *(pn_q+i));
*(pq_ss+i)=(*(pq+i) * *(pn_i+i) - *(pi+i) * *(pn_q+i))/(*(pn_i+i) * *(pn_i+i) + *(pn_q+i) * *(pn_q+i));
}
for(i=0;i<=384*64-1;i++) //解WALSH I
{
if(i%64==0)
{
string_afterdess[j]=*(pi_ss+i) * 1;
j++;
}
}
j=0;
for(i=0;i<=384*64-1;i++) //解WALSH Q
{
if(i%64==0)
{
string_afterdess[384+j]=*(pq_ss+i) * 1;
j++;
}
}
return (string_afterdess);
}
void main()
{
int string[768]={1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,1,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,
1,0,1,1,0,0,1,1,0,1,1,1};
int *s;
int j;
s=despreadspectrum(string);
for(j=0;j<=768*32*2-1;j++)
{
printf("%d ",*(s+j));
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -