通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2009-7-3
跳转到指定楼层
1#
发表于 2009-7-3 15:36:08 |只看该作者 |倒序浏览
gold码同步与异步有什么区别?
          我在做CDMA的仿真实验,
         以下是gold码异步的MATLAB计算误码率。     那请问同步的呢??????
%1. gold码异步时,计算误码率程序
function [pb]=cm_sm320000(snr_in_dB)
%[pb]=cm_sm32(sm_in_dB)
%cm_sm32give bits error rate ands symbol error rate in given S/N
%thinking:generate data,transvert data,spread spectrum,modulate,add noise,
%construct CNN,...
% BPSK modulation
snr_in_dB=-1:13;
Lc=31; % processing gain
N=1000;
E=1;
%needed signal
snr=10.^(snr_in_dB/10);
sgma=sqrt(E./(2*snr));
n=gngauss(sgma);
E_chip=E/Lc; %%?????????????????????????
%generate PN code
temp=gold;
pn_seq1=2*temp(3,:)-1;
pn_seq2=2*temp(4,:)-1;
pn_seq3=2*temp(7,:)-1;
pn_seq4=2*temp(9,:)-1;
pn_seq5=2*temp(10,:)-1;
%shift PN code
pn_seq2=[pn_seq2(2:31) pn_seq2(1:1)];
pn_seq3=[pn_seq3(3:31) pn_seq3(1:2)];
pn_seq4=[pn_seq4(4:31) pn_seq4(1:3)];
pn_seq5=[pn_seq5(5:31) pn_seq5(1:4)];
%generate data
for i=1:N
    temp1=rand;
if(temp1<0.5)
    dsource11(i)=-1;
else dsource11(i)=1;end;
temp2=rand;
if(temp2<0.5)
    dsource22(i)=-1;
else dsource22(i)=1;end;
temp3=rand;
if(temp3<0.5)
    dsource33(i)=-1;
else dsource33(i)=1;end;
temp4=rand;
if(temp4<0.5)
    dsource44(i)=-1;
else dsource44(i)=1;end;
temp5=rand;
if(temp5<0.5)
    dsource55(i)=-1;
else dsource55(i)=1;end;
end;
% %%************************
% for i=1:N
%     temp1(i)=randsrc;
%     temp2(i)=randsrc;
%     temp3(i)=randsrc;
%     temp4(i)=randsrc;
%     temp5(i)=randsrc;
% end
% dsource11=temp1;
% dsource22=temp2;
% dsource33=temp3;
% dsource44=temp4;
% dsource55=temp5;
% %%%**********************
for ni=1:length(snr_in_dB),
numofbiterror=0;
for i=1:N
%repeat data
for j= 1c
rep_data1(j)=dsource11(i);
rep_data2(j)=dsource22(i);
rep_data3(j)=dsource33(i);
rep_data4(j)=dsource44(i);
rep_data5(j)=dsource55(i);
end ;
%tansmitted signalis
trans_siq1=rep_data1.*pn_seq1;
trans_siq2=rep_data2.*pn_seq2;
trans_siq3=rep_data3.*pn_seq3;
trans_siq4=rep_data4.*pn_seq4;
trans_siq5=rep_data5.*pn_seq5;
%add noise
for j= 1c
% n=gngauss(sgma(ni));
middle(j)=sqrt(E_chip)*(trans_siq1(j)+trans_siq2(j)+trans_siq3(j)+trans_siq4(j)+trans_siq5(j));
% r(j)=middle(j)+n;
r(j)=awgn(middle(j),sgma(ni));
end ;
r1=r; r2=r;r3=r;r4=r;r5=r;
%*************************************************
%derive judging
I1=sum(r1.*pn_seq1);
I2=sum(r2.*pn_seq2);
I3=sum(r3.*pn_seq3);
I4=sum(r4.*pn_seq4);
I5=sum(r5.*pn_seq5);
%*** *************************************************
%judging
if(I1<0)
    decision1=-1;
else decision1=1; end;
if(I2<0)
    decision2=-1;
else decision2=1; end;
if(I3<0)
    decision3=-1;
else decision3=1;end;
if(I4<0)
    decision4=-1;
else decision4=1;end;
if(I5<0)
    decision5=-1;
else decision5=1; end;
%compute numofbiterror
if(decision1~=dsource11(i))
    numofbiterror=numofbiterror+1;end;
if(decision2~=dsource22(i))
    numofbiterror=numofbiterror+1;end;
if(decision3~=dsource33(i))
    mumofbiterror=numofbiterror+1;end;
if(decision4~=dsource44(i))
    numofbiterror=numofbiterror+1;end;
if(decision5~=dsource55(i))
    numofbiterror=numofbiterror+1;end;
end;
pb(ni)=numofbiterror/(5*N);
end;
%plot(snr_in_dB,pb,'-*')
semilogy(snr_in_dB,pb,'-*')
xlabel('snr(dB)')
ylabel('BER')
title('gold码异步时,计算误码率')

举报本楼

本帖有 2 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

版规|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2026-4-2 06:02 , Processed in 0.187482 second(s), 17 queries , Gzip On.

Copyright © 1999-2025 C114 All Rights Reserved

Discuz Licensed

回顶部