CDMA_RAKE.rar

  • 兔子爱吃胡萝卜
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 3
    下载次数
  • 2021-04-27 15:02
    上传日期
CDMA Rake接收机误码率仿真例子
CDMA_RAKE.rar
  • CDMA_RAKE.m
    3.7KB
内容介绍
% CDMA Rake接收机误码率仿真 % 系统描述 % 异步DS-CDMA系统 % 多径慢衰落信道 % 矩形码片成型滤波器 % Rake接收: 最大比值合并 clear;clc;%close all; timeofprog=cputime; K=1; %用户数 Lc=31;%扩频码长度 T=1;Tc=T/Lc;%信号比特和扩频码周期 code_type=2; %0 = 随机 1 = hadamard码 2 = gold码 code_seed=rand('state'); codes=(cdma_codes(K,0,code_type,Lc,code_seed))'; Q=10;% 矩形码片成型滤波器过抽样因子 Mpmax=5;%最大多径数 Mps=Mpmax*ones(K,1);%每个用户的多径数 %随机产生的时延,每条路径可分离 while (1) TausOri=rand(K,Mpmax)*Lc; TausOri=sort(TausOri,2); Tausdelta=TausOri(:,2:Mpmax)-TausOri(:,1:Mpmax-1); TuasSTD=sum(sum(Tausdelta>ones(K,Mpmax-1),1),2); if TuasSTD==K*(Mpmax-1) break end end Taus=floor(TausOri*Q)/Q; TausSam=Taus*Q;%将时延转换为相应的抽样数 %仿真数据存储226 filename='CDMARakedatapp.m'; fid=fopen(filename,'a+'); fprintf(fid,'%s ','???SimuPara: '); SimuPara=[Lc,Taus]; for dataID=1:length(SimuPara) fprintf(fid,'%f ',SimuPara(dataID)); end fprintf(fid,'\n'); fclose(fid); %设置信噪比SNRdBs SNRdBs=-10:0; nSNRdBs=length(SNRdBs); for SNRID=1:nSNRdBs SNRdB=SNRdBs(SNRID); %AWGN方差的产生 N0=1/(10^(SNRdB/10))-(K*Mps(K)-1)*1/(3*N); %AWGN的单边功率谱密度 Bandwidth=Tc/2; %匹配滤波器等效带宽 sigma2=N0*Bandwidth/2; %经过匹配滤波器后AWGN的方差 sigma=sqrt(sigma2); nbitsAll=0; %发送总比特数 nerrorbits=zeros(Mps(1),1); %错误比特数 times=0; %循环次数 while (1) N=1000;%一次发送的比特数 bits=2*rem(unidrnd(2,K,N),2)-1;%BPSK信号 Signal=zeros(1,(N+1)*Lc*Q);%不包括AWGN for k=1:K bitsChip=kron(bits(k,:),codes(k,:));%bits -->chips ChipsSam=kron(bitsChip,ones(1,Q));%chips --> samples for pathID=1:Mps(k) Fadings(pathID,:)=kron(raylrnd(1/(sqrt(2)),1,N),ones(1,Lc*Q)); %产生瑞利衰落振幅 TauSam=round(TausSam(k,pathID)); Signal(TauSam+1:TauSam+N*Lc*Q)=Signal(TauSam+1:TauSam+N*Lc*Q)+... Fadings(pathID,:).*ChipsSam; end end % 第一个用户的Rake接收 % 假设时延已经准确估计 TausSamEst=TausSam; Rakebranch=zeros(Mps(1),N); for pathID=1:Mps(1) TauSam=round(TausSamEst(1,pathID)); RakeChipMF=1/2*sum(reshape(Signal(TauSam+1:TauSam+N*Lc*Q),Q,N*Lc),1)*(Tc/Q); %解调后的信号(振幅为解调前的1/2)再经过匹配滤波器 Noise=sigma*randn(1,N*Lc); RakeChipMF=RakeChipMF+Noise;%加上噪声 Rakebranch(pathID,:)=codes(1,:)*reshape(RakeChipMF,Lc,N)*Tc; %解扩 end %最大比值合并 Rakebranchpower=Rakebranch.^2; for pathID=1:Mps(K) power=sum(Rakebranchpower(1:pathID,:),1); for temp=1:pathID MRCPara(temp,:)=Rakebranchpower(temp,:)./power; %每条路径的最大比值合并系数 end orderID=pathID; RakeMRC(orderID,:)=sum(MRCPara(1:pathID,:).*Rakebranch(1:pathID,:),1); end %误码率计算 RakeRcvSign=sign(RakeMRC); nbitsAll=nbitsAll+N; nerrorbits=nerrorbits+sum(abs(sign(RakeRcvSign-kron(bits(1,:),ones(Mps(K),1)))),2); BER=nerrorbits/nbitsAll; [SNRdB,nbitsAll/N,nerrorbits'] %输出数据存储 fid=fopen(filename,'a+'); outdata=[SNRdB,nbitsAll,nerrorbits',BER']; for dataID=1:length(outdata) fprintf(fid,'%f ',outdata(dataID)); end fprintf(fid,'\n'); fclose(fid); times=times+1; %跳出WHILE循环的条件 if nerrorbits(Mps(1))>=100 | times>=10 break end end end timeofprog=cputime-timeofprog display('Program exit!!!');
评论
    相关推荐
    • rake(cdma).zip
      CDMARake接收机源码,在Matlab环境下运行
    • Rake-receiver-for-CDMA.rar
      基于MATLAB的rake接收机的仿真分析,RAKE接收机作用CDMA调制通讯系统常用的接收机,该仿真代码质量较高,可供CDMA通信工程专业本科和硕士毕业论文仿真提供参考
    • rake_simulation.rar
      matlab CDMA扩频通信以及RAKE接收机仿真测试代码
    • rake-simulation.rar
      CDMA系统Rake接收误比特率模拟程序,链路级各个模块均包括,有详细的程序注释。
    • DSCDMA_RAKEMATLAB.rar
      关于CDMA系统的rake接收机的MATLAB仿真源代码,简单经典
    • RAKEreceiver_CDMA.rar
      使用MATLAB实现CDMA系统的RAKE接收机,并给出了合并后的系统性能。并给出将数字调制改成QPSK时修改后的程序。
    • 3913958.rar
      有关使用SIMULINK设计的DS-CDMArake接收机
    • rake.zip
      基于MATLAB 的CDMA RAKE接收机的仿真
    • CDMA扩频通信与RAKE接收机仿真程序
      在matlab平台下实现仿真CDMA码分多址通信信号调制信号产生、瑞丽衰落信道以及RAKE接收机的仿真测试程序,能够测试误码率等通信性能。
    • c++时尚编程百例__1-20.rar
      c++时尚编程百例__1-20