?? ss_pemmse.m
字號:
function [p,Pd,Pmmse]=ss_pemmse(snrindb,R,PN1,PN2,PN3,PN4)
%本函數在一定的信噪比條件下測試出相應的誤碼率,
%針對單用戶和傳統多用戶以及解相關器多用戶
%考慮到遠近效應的影響
%[p1,p,Pd,Pmmse]分別返回單用戶,傳統多用戶檢測
%解相關檢測,mmse檢測的誤碼率
Lc=31;
M=7;%干擾的幅度
w0=1;
%
%由給出的信噪比計算出實際的信噪比
snr=10^(snrindb/10);
%噪聲方差假設為1,信號的幅度也設為1
sgma=1;
%比特能量,定義噪聲功率=2*sgma^2
Eb=2*sgma^2*snr;
N01=sgma;
%碼片能量
E_chip=Eb/Lc;
%
S=inv(R);
%
N=10000;
numoferr=0;
numoferrofde=0;
numoferrmmse=0;
%
%
%產生10000個數據比特
for i=1:N,
%
%產生第一個用戶數據
temp=rand;
if (temp<0.5),
data1=-1;
else
data1=1;
end;
%重復產生的比特
for j=1:Lc,
repeated_data1(j)=data1;
end;
%
%產生第二個用戶數據
temp=rand;
if (temp<0.5),
data2=-1;
else
data2=1;
end;
%重復產生的比特
for j=1:Lc,
repeated_data2(j)=data2;
end;
%
%產生第三個用戶數據
temp=rand;
if (temp<0.5),
data3=-1;
else
data3=1;
end;
%重復產生的比特
for j=1:Lc,
repeated_data3(j)=data3;
end;
%
%產生第四個用戶數據
temp=rand;
if (temp<0.5),
data4=-1;
else
data4=1;
end;
%重復產生的比特
for j=1:Lc,
repeated_data4(j)=data4;
end;
%
%信號的幅度
A1=rand;
A2=rand;
A3=rand;
A4=rand;
%
%the matrix of the amplitude of signal
A=[A1 0 0 0;0 A2 0 0;0 0 A3 0;0 0 0 A4];
%發送信號為
tran_seq1=A1*sqrt(E_chip)*repeated_data1.*PN1;
tran_seq2=A2*sqrt(E_chip)*repeated_data2.*PN2;
tran_seq3=A3*sqrt(E_chip)*repeated_data3.*PN3;
tran_seq4=A4*sqrt(E_chip)*repeated_data3.*PN4;
trans_sig=tran_seq1+tran_seq2+tran_seq3+tran_seq4;
%
%方差為sgma^2的gauss white noise
noise=sgma*rand(1,Lc);
%
%干擾
n=(i-1)*Lc+1:i*Lc;
interference=0.05*M*sin(w0*n);
%
N02=(A1*0.05*M)^2/2;
N0=(A1*N01+N02);
% %matrix of mmse
%
%the matrix of the amplitude of signal
%
A=[A1 0 0 0;0 A2 0 0;0 0 A3 0;0 0 0 A4];
Lmmse=inv(R+N0*inv(A)*inv(A));
%the receive signal of the first user
%
nr=A1*(noise+interference);
%
%
%接收信號
rec_sig=trans_sig+nr;
%the matrix of receive signal
Y1= sum(rec_sig.*PN1)/Lc;
Y2= sum(rec_sig.*PN2)/Lc;
Y3= sum(rec_sig.*PN3)/Lc;
Y4= sum(rec_sig.*PN4)/Lc;
Y=[Y1 Y2 Y3 Y4]';
%
dataout1=[1 0 0 0]*(S*Y);
datammse=[1 0 0 0]*(Lmmse*Y);
%
%
%從接收信號中產生判決變量
%multiusers
temp=rec_sig.*PN1;
decision_variable=sum(temp)/Lc;
%multiusers of decorrelating detector
dataout=dataout1;
%
%進行判決
%
%multiusers detection
if (decision_variable<0),
decision=-1;
else
decision=1;
end;
%%multiusers of decorrelating detection
if (dataout<0),
decisionofde=-1;
else
decisionofde=1;
end;
%detection of mmse detector
if (datammse<0),
decisionmmse=-1;
else
decisionmmse=1;
end;
%I如果存在傳輸中的錯誤,計算器累加操作
%
if (decision~=data1),
numoferr=numoferr+1;
end;
%
if (decisionofde~=data1),
numoferrofde=numoferrofde+1;
end;
%
if (decisionmmse~=data1),
numoferrmmse=numoferrmmse+1;
end;
%
end;
p=numoferr/N;
Pd=numoferrofde/N;
Pmmse=numoferrmmse/N;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -