?? 新建 文本文檔.txt
字號(hào):
function[p1,p,jxg,mmse]=mul(snr_in_dB)
Lc=31;
snr=10^(snr_in_dB/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=10000;
K=length(A);
connections1=[1 0 1 0 0];
connections2=[1 1 1 0 1];
gold_seq=get_gold(connections1,connections2);
user1code=(1/sqrt(Lc))*gold_seq(:,31);
p1num_of_err=0; %錯(cuò)誤碼數(shù)先賦0
pnum_of_err=0;
jxgnum_of_err=0;
mmsenum_of_err=0;
S=zeros(31,K+1); %定義擴(kuò)頻碼矩陣
S(:,K+1)=user1code;
for i=1:N,
b=zeros(K+1,1); %定義發(fā)送端發(fā)送的信息列
y=zeros(K+1,1); %定義經(jīng)過(guò)匹配濾波器組相關(guān)處理后的信息列
% 產(chǎn)生新的數(shù)據(jù)位
temp=rand;
if (temp<0.5),
data=-1;
else
data=1;
end;
% 發(fā)送信號(hào)為
trans_sig=sqrt(Eb)*data*user1code; %與公式相比sqrt(Eb)相當(dāng)于Ak data相當(dāng)于bk user1code為sk sqrt(Eb)認(rèn)為是期望用戶,
noise=sgma*randn(Lc,1); %產(chǎn)生一列31行的隨機(jī)噪聲
% 產(chǎn)生K個(gè)干擾用戶,dat是干擾用戶數(shù)據(jù),真正的用戶為K+1個(gè),期望用戶直接定義為sqrt(Eb)
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); %干擾用戶數(shù)據(jù)的擴(kuò)頻碼放在1到第K列,期望用戶的在第31列
S(:,k)=(1/sqrt(Lc))*gold_seq(:,k);
b(k)=dat;
end;
b(K+1)=data;
R=corrcoef(S); %擴(kuò)頻碼的互相關(guān)矩陣
%接收信號(hào)
rec_sig=trans_sig+noise+inter_sig; %接收到的數(shù)據(jù)是31x1位的
% 從接收信號(hào)中產(chǎn)生判決變量
%單用戶
y1=rec_sig'*S(:,31);
%多用戶
for k=1:K+1,
y(k)=rec_sig'*S(:,k); %求出經(jīng)過(guò)匹配濾波器組相關(guān)處理后的信息列
end
%單用戶
dec1=sign(y1);
if (dec1<=0)
bit1=-1;
else
bit1=1;
end;
if(bit1~=data),
num_of_err1=num_of_err1+1;
end;
%傳統(tǒng)多用戶
dec=sign(y(k));
if (dec<=0)
bit=-1;
else
bit=1;
end;
if(bit~=data),
num_of_err=num_of_err+1;
end;
% 解相關(guān)
M=inv(R)*y;
decjxg=sign(M(K+1));
if (decjxg<=0)
bitjxg=-1;
else
bitjxg=1;
end;
if (bitjxg~= data),
jxgnum_of_err=jxgnum_of_err+1;
end;
%MMSE
mmse=inv(R+inv(R)*inv(R));
decmmse=sign(M(K+1));
if (decmmse<=0);
bitmmse=-1;
else
bitmmse=-1;
end;
if (bitmmse~= data),
mmsenum_of_err=mmsenum_of_err+1;
end;
end; % 對(duì)應(yīng)for i=1:N,
p1=num_of_err1/N;
p=num_of_err/N;
jxg=jxgnum_of_err/N;
mmse=mmsenum_of_err/N;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -