Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2011-05-31
帖子: 2
声望力: 0 ![]() |
![]()
解相关检测算法的误码率计算程序
function [p]=JXG(snr_in_dB) Lc=31; snr=10^(snr_in_dB/10); snr=exp(snr_in_dB*log(10)/10) sgma=1; Eb=sgma^2*snr; E_chip=Eb/Lc; A=[sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb)]; N=1000; K=length(A); connections1=[10100]; connections2=[11101]; gold_seq=get_gold(conections1,connections2); user1code=(1/sqrt(Lc))*gold_seq(:,31); num_of_err=0; S=zeros(31,K+1); S(:,K+1)=user1code; w=[A,sqrt(Eb)]; W=diag(w); for i=1:N, b=zeros(K+1,1); y=zeros(K+1,1); temp=rand; if(temp<0.5), data=-1; else data=1; end; trans_sig=sqrt(Eb)*data*user1code; noise=sgma*randn(Lc,1); inter_sig=zeros(31,1); 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); S(:,k)=(1/sqrt(Lc))*gold_seq(:,k); b(k)=dat; end; b(K+1)=data; R=corrcoef(S); rec_sig=trans_sig+noise+inter_sig; for k=1:K+1, y(k)=rec_sig'*S(:,k); end M=inv(R)*y; dec=sign(M(K+1)); if (dec<=0), bit=-1; else bit=1; end; if(bit~=data), num_of_err=num_of_err+1; end; end; p=num_of_err/N; |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2011-05-24
年龄: 39
帖子: 10
声望力: 14 ![]() |
![]()
程序不对, 有点问题, 加我扣扣:1790880773
本人对matlab极为热爱, 需要帮忙的话,就加我 |
![]() |
![]() |