📄 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 + -