主题: [MATLAB毕业设计] 程序运行不出来,求大手们指点
查看单个帖子
旧 2011-05-31, 12:49   #1
lyfxdh2011
初级会员
 
注册日期: 2011-05-31
帖子: 2
声望力: 0
lyfxdh2011 正向着好的方向发展
默认 程序运行不出来,求大手们指点

解相关检测算法的误码率计算程序
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;
lyfxdh2011 当前离线   回复时引用此帖