?? mmse.m
字號:
% adaptiveMMSE(LMS)多用戶檢測(非盲),同步信號
clc
clear
fbconnection=[0 1 0 0 1]; % fbconnection為m序列的一個本原多項式
mseq=m_sequence(fbconnection); % 產生m序列
fbconnection1=[0 0 1 0 1];
fbconnection2=[0 1 1 1 1]; % fbconnection1,fbconnenction2為m序列的一對優先對
goldseq=gold_seq(fbconnection1,fbconnection2); % 產生gold序列
N=2^length(fbconnection)-1; % N為gold序列長度,即為擴頻倍數(擴頻增益)
ind1=find(mseq==0);
mseq(ind1)=-1; % 極性變換
ind2=find(goldseq==0);
goldseq(ind2)=-1;% 極性變換
% goldseq=1/sqrt(31)*goldseq;
bit_number=2000; % bit_number為用戶數據長度
K=6; % K為DS-CDMA信號中用戶個數
ABer=zeros(1,13);
ReN=500;
figure
for rei=1:ReN;
data=zeros(K,bit_number);
for i=1:K
data(i,:)=randsrc(1,bit_number);
end % 產生K*bit_number的用戶混合矩陣
u=1*1e-1;
SNR=-2:10;
n1=length(SNR);
Ber=zeros(1,length(SNR));
j=1;
a=SNR(1);
b=SNR(n1);
power1=0;% 假設第一個用戶為期望用戶,發射功率為0dB,其他用戶為干擾用戶,干擾功率為InterpowerdB,
Interpower=[4 4 4 4 4];
% Interpower=rand(1,K-1)*10;
% Interpower=floor(Interpower)+1;
Power=[power1,Interpower];
A=zeros(1,K);
for k=1:K
A(k)=sqrt(10^(Power(k)/10));
end
s1=goldseq(1,:)';
for snr=a:b
r=zeros(N,bit_number);
for k=1:K
r1=zeros(N,bit_number);
r1=goldseq(k,:)'*data(k,:);
r1=awgn(r1,snr);
r=r+A(k)*r1;
end
e=zeros(1,bit_number);
y1=zeros(1,bit_number);
x=zeros(N,1);
for i=1:100
y1(i)=sign(x'*r(:,i));
e(i)=data(1,i)-y1(i);;
x=x+u*e(i)*r(:,i);
end
for i=101:bit_number
y1(i)=sign(x'*r(:,i));
e(i)=data(1,i)-y1(i);
end
[number,ber]=symerr(y1,data(1,:));
Ber(j)=ber;
j=j+1;
end
ABer=Ber+ABer;
SNR=a:b;
semilogy(SNR,Ber,':*');
hold on;
u=u*10;
end
Ber=ABer/ReN;
semilogy(SNR,Ber,'r-^');
title('同步DS-CDMA信號的線性MMSE(LMS算法)多用戶檢測');
xlabel('SNR(dB)');
ylabel('BER');
grid on
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -