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

📄 despreadspectrum.cpp

📁 CDMA2000
💻 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 + -