⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cma_bmud.m

📁 应用恒模算法实现的DS-CDMA多用户检测。
💻 M
字号:
function SINR=cma_bmud()
clear all;
%load goldseq;
load b;
%goldseq=1/sqrt(31)*goldseq;
goldseq=signature_matrix(5,31);
s1=goldseq(1,:)';
s2=goldseq(2,:)';
s3=goldseq(3,:)';
s4=goldseq(4,:)';
s5=goldseq(5,:)';
s6=goldseq(6,:)';


A2=10;
A3=10;
A4=10;
A5=10;
A6=10;
%epsilon=0.001
w=s1;
a=s1;
u=10^-4;
xm=zeros(31,1);
r1=goldseq(1,:)'*b(1,:);
r2=goldseq(2,:)'*b(2,:);
r3=goldseq(3,:)'*b(3,:);
r4=goldseq(4,:)'*b(4,:);
r5=goldseq(5,:)'*b(5,:);
r6=goldseq(6,:)'*b(6,:);

r=r1+A2*r2+A3*r3+A4*r4+A5*r5+A6*r6;
%wOld=zeros(size(s1));
SNR=10;
r=awgn(r,SNR);
for i=1:2000
  
    x(:,i)=r(:,i);
    ya(i)=w'*x(:,i);
    ys(i)=a'*x(:,i);
    Zmf=s1'*r(:,i);
    Z=(s1+xm)'*r(:,i);
    xm=xm-u*Z*(r(:,i)-Zmf*s1);
    wz=s1+xm;
   % if norm(w - wOld) < epsilon | norm(w + wOld) < epsilon
    %    break;
    %end
    %wOld=w;
    w=w-u*(ya(i)^2-1)*ya(i)*r(:,i);
    a=a-u*abs(abs(ys(i))^0.8-0.8)*abs(ys(i))^-1.2*conj(ys(i))*x(:,i);
    
    
    na=(A2*w'*s2)^2+(A3*w'*s3)^2+(A4*w'*s4)^2+(A5*w'*s5)^2+(A6*w'*s6)^2+w'*0.1*w;
    ns=(A2*a'*s2)^2+(A3*a'*s3)^2+(A4*a'*s4)^2+(A5*a'*s5)^2+(A6*a'*s6)^2+a'*0.1*a;
    %nz=(A2*wz'*s2)^2+(A3*wz'*s3)^2+(A4*wz'*s4)^2+(A5*wz'*s5)^2+(A6*wz'*s6)^2+wz'*0.1*wz;
    %nk=(A2*wd'*s2)^2+(A3*wd'*s3)^2+(A4*wd'*s4)^2+(A5*wd'*s5)^2+(A6*wd'*s6)^2+wd'*0.1*wd;
    SINRa(i)=((w'*s1)^2)/na;
    SINRs(i)=((a'*s1)^2)/ns;
    %SINRz(i)=((wz'*s1)^2)/nz;
    %SINRk(i)=((wk'*s1)^2)/nk;
end

i=1:2000;
subplot(211);
%plot(i,10*log10(SINRz));
plot(i,10*log10(SINRa));
hold on;
plot(i,10*log10(SINRs) );axis([1 2000 0 12]);
grid on;
text(50,10*log10(SINRa(50)),'\Leftarrow CMA','BackgroundColor','w');
text(400,10*log10(SINRs(400)),'\Leftarrow G-CMA','BackgroundColor','w');
xlabel('迭代次数');
ylabel('信号干扰噪声比(SINR)/db');
title('高斯白噪声 SNR=10');

clear r x ya ys w a na ns SINRa SINRs;
w=s1;
a=s1;
u=10^-4;

r=r1+A2*r2+A3*r3+A4*r4+A5*r5+A6*r6;
%wOld=zeros(size(s1));
SNR=15;
r=awgn(r,SNR);
for i=1:2000
    x(:,i)=r(:,i);
    ya(i)=w'*x(:,i);
    ys(i)=a'*x(:,i);
   % if norm(w - wOld) < epsilon | norm(w + wOld) < epsilon
    %    break;
    %end
    %wOld=w;
    w=w-u*(ya(i)^2-1)*ya(i)*r(:,i);
    a=a-u*abs(abs(ys(i))^0.8-0.8)*abs(ys(i))^-1.2*conj(ys(i))*x(:,i);
    
    
    na=(A2*w'*s2)^2+(A3*w'*s3)^2+(A4*w'*s4)^2+(A5*w'*s5)^2+(A6*w'*s6)^2+w'*0.0316*w;
    ns=(A2*a'*s2)^2+(A3*a'*s3)^2+(A4*a'*s4)^2+(A5*a'*s5)^2+(A6*a'*s6)^2+w'*0.0316*w;
    SINRa(i)=((w'*s1)^2)/na;
    SINRs(i)=((a'*s1)^2)/ns;
end

i=1:2000;
subplot(212);
plot(i,10*log10(SINRa));
hold on;
plot(i,10*log10(SINRs) );axis([1 2000 0 17]);
grid on;
text(70,10*log10(SINRa(70)),'\Leftarrow CMA','BackgroundColor','w');
text(400,10*log10(SINRs(400)),'\Leftarrow G-CMA','BackgroundColor','w');
xlabel('迭代次数');
ylabel('信号干扰噪声比(SINR)/db');
title('高斯白噪声 SNR=15');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -