📄 xiugaideq.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 + -