• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签:

资源简介

各种多用户检测算法性能的比较,含神经网络算法,解相关算法等

资源截图

代码片段和文件信息

%product received vector 
function [p]=BP(snr_in_dB)
Lc=31;                  %Lc is frame size 码长
snr=10^(snr_in_dB/10);   %信噪比由dB形式转化               也有的写为snr=exp(snr_in_dB*log(10)/10)
sgma=1;                  % noise standard deviation is fixed 定义方差
Eb=2*sgma^2*snr;         % signal level required to achieve the given 
                         % signal to noise ratio 
E_chip=Eb/Lc;            % energy per chip 每个码片能量
A=[sqrt(Eb)sqrt(Eb)sqrt(Eb)];     %sqrt(20*Eb)sqrt(20*Eb)sqrt(20*Eb)sqrt(20*Eb)  
% A为干扰用户的幅度,0-30,最多不要超过31,干扰强度为20dBBPSK中
% 干扰强度=10*log(Ak^2/E1)E1为期望用户的能量若想实现干扰强度随snr_in_dB变化则干扰用户为sqrt(Eb*exp(snr_in_dB/10))
N=1000;                  % number of bits transmitted  发送的信息位,如果图效果不好可以改大                 
K=length(A);             % number of users 用户数,即A的长度
 
% gold sequence for the duration of the bit is generated next 
connections1=[1 0 1 0 0];
connections2=[1 1 1 0 1];
gold_seq=get_gold(connections1connections2);  %产生31x31的扩频码
user1code=(1/sqrt(Lc))*gold_seq(:31);   %定义了用户1的扩频码,1/sqrt(Lc)表示归一化,把用户的扩频码定义在第31列,可以减少干扰用户的影响

% The generation of the data noise interference decoding process and error 
% counting is performed all together in order to decrease the run time of
% the program. This is accomplished by avoiding very large sized vectors. 


%算法赋初值
 num_of_err=0;  %错误码数先赋0
 S=zeros(31K+1);  %定义扩频码矩阵
 S(:K+1)=user1code; 
 w=[Asqrt(Eb)];
 W=diag(w);
 
%从此位开始一直到最后一个end,是循环,作用是发送并检测,用接收与发送比较计算错误码个数

for i=1:10 
  
  b=zeros(K+11);   %定义发送端发送的信息列
  y=zeros(K+11);   %定义经过匹配滤波器组相关处理后的信息列  
 
% generate the next data bit  产生新的数据位
  temp=rand;  
  if (temp<0.5)
      data=-1;
  else
      data=1;
  end
  % the transmitted signal is 
  trans_sig=sqrt(Eb)*data*user1code; %与公式相比sqrt(Eb)相当于Ak data相当于bk user1code为sk   sqrt(Eb)认为是期望用户,
%   与A中干扰用户幅度定义不同,为了突出最后图的效果
  
% AWGN with variance sgma^2 
  noise=sgma*randn(Lc1);   %产生一列31行的随机噪声,加性高斯白噪声  不是sgma^2是因为sgma本身为1(或许可以这么认为)
 
  % interference user data is dat
  % 产生K个干扰用户,dat是干扰用户数据,真正的用户为K+1个,期望用户直接定义为sqrt(Eb)
  inter_sig=zeros(311);

  for k=1:K
      temp=rand;  
      if (temp<0.5)
          dat=-1;
      else
          dat=1;
      end
      inter_sig=inter_sig+A(k)*dat*(1/sqrt(Lc))*gold_seq(:k); %干扰用户数据的扩频码放在1到第K列,期望用户的在第31列
      S(:k)=(1/sqrt(Lc))*gold_seq(:k); 
      b(k)=dat;
  end;
  b(K+1)=data;
  
  R=corrcoef(S);  %扩频码的互相关矩阵
 
 % received signal  
  rec_sig=trans_sig+noise+inter_sig;   %接收到的数据是31x1位的
 
 

 % making detect                       开始检测
  for k=1:K+1
      y(k)=rec_sig‘*S(:k);               %求出经过匹配滤波器组相关处理后的信息列 
  end
 % 建立Bp神经网络,并加以训练
  net=newff(minmax(y‘)[31]{‘tansig‘‘purelin‘}‘traingd‘‘learngd‘);
  net.trainParam.goal=0.001;
  net.trainParam.lr=0.05;
  net.trainParam.eporchs=300;
  net.trainParam.show=NaN;
  b=b‘;
  net=train(nety‘b);
end
% 网络训练好以后,开始正式检测
for i=1:N 
  
  b=zeros(K+11);   %定义发送端发送的信息列
  y=zeros(K+11);   %定义经过匹配滤波器组相关处理后的信息列

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        279  2006-10-17 23:36  mud程序\jiexiangguanmain.m

     文件       3340  2006-10-18 21:58  mud程序\JXG.m

     文件       2937  2006-10-20 16:34  mud程序\MF.m

     文件        282  2006-10-20 16:29  mud程序\MFmain.m

     文件       5045  2006-09-12 11:49  mud程序\BP.m

     文件       1833  2004-08-25 20:27  mud程序\get_gold.m

     文件       2181  2004-08-25 20:28  mud程序\lmsreceiver.m

     目录          0  2006-10-22 14:38  mud程序

----------- ---------  ---------- -----  ----

                15897                    8


评论

共有 条评论