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

📄 xiugaideq.c

📁 在一个通信系统中对信源的扩频
💻 C
字号:
#include <stdlib.h> 
#include <iostream.h> 
#include <conio.h> 
#include <time.h> 
#include <stdio.h>
double uniform(double a,double b)//随机数;
{
	double m,n;
	m=b-a;
	n=a+(double)(m*rand()/(RAND_MAX+1.0));
	return n;
}
void sigsource(int souce[])
{
	int i;
	for(i=0;i<1000;i++)
	{
		if(uniform(0,1)<0.5)
			souce[i]=0;
		else souce[i]=1;
	}

}//产生信源;

void Dsss(int xx[],int yy[],int zz[])//扩频 其中xx[1000]是信源、yy[7]是m序列、zz[7000]扩频后的信号;
{
	int k=0,i,j;
	for(i=0;i<1000;i++)
		for(j=0;j<7;j++)
		{
			zz[k]=xx[i]^yy[j];
	     	k++;
		}
}

void jjdsss(int ds[],int jss[],int mm[])//解扩 ds[7000]是扩频信号、jss[1000]是解扩后的信号,mm[]是m序列;
{   int i,j,n=0;
    for(i=0;i<7000;i=i+7)
	{
		int k=0;int num=0;
		for(j=i;j<i+7;j++)
		{  
		    if(ds[j]==mm[k++])
				num=num+0;
			else num=num+1;
		}
		if(num<3)
			jss[n]=0;
		else jss[n]=1;
		n=n+1;
	}

}
float errorrat(int ss[],int jss[])//误码率ss[],jss[]分别是前后的信号;
{    int i,x=0;float y;
     for(i=0;i<1000;i++)
	 {if(ss[i]!=jss[i])
	  x=x+1;
	 else continue;
	 }
	 y=(float)x/1000;
	return y;
}

main()
{	
	int ss[1000],ds[7000],jss[1000];int m[7]={0,0,1,0,1,1,1}; int i,j;double n; 
	float rate;
	srand((unsigned)time(NULL));
	sigsource(ss);//信源
    Dsss(ss,m,ds);//扩频
    srand((unsigned)time(NULL));
	for(i=0;i<700;i++)//产生700个错误
	{n=uniform(0,7000);
     j=(int)n;
       if(ds[j]=1)
	   ds[j]=0;
        else ds[j]=1;
	}
	 jjdsss(ds,jss,m);//解扩
      rate=errorrat(ss,jss);
	  printf("%f",rate);
}

⌨️ 快捷键说明

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