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

📄 cdma2.m

📁 硕士CDMA作业
💻 M
字号:
%解相关检测%
clear all
A=1
for q=0:25
%m序列生成
a1=zeros(63,7);
b1=zeros(7,1);
c1=zeros(1,63);
b1=[0 0 0 0 0 1 0];
a1(1,6)=1;
for i=1:63,
    b1(1,7)=b1(1,6);
    b1(1,6)=b1(1,5);
    b1(1,5)=b1(1,4);
    b1(1,4)=b1(1,3);
    b1(1,3)=b1(1,2);
    b1(1,2)=b1(1,1);
    b1(1,1)=xor(b1(1,1),b1(1,7));
    for j=1:7,
        a1(i,j)=b1(1,j);
    end
end
for k=1:63,
    if (a1(k,7)==0),
        c1(1,k)=1;
    else
        c1(1,k)=-1; 
    end
end
a2=zeros(63,7);
b2=zeros(7,1);
c2=zeros(1,63);
b2=[0 0 0 0 0 1 0];
a2(1,6)=1;
for i=1:63,
    b2(1,7)=b2(1,6);
    b2(1,6)=b2(1,5);
    b2(1,5)=b2(1,4);
    b2(1,4)=b2(1,3);
    b2(1,3)=b2(1,2);
    b2(1,2)=b2(1,1);
    b2(1,1)=xor(b2(1,6),b2(1,7));
    for j=1:7,
        a2(i,j)=b2(1,j);
    end
end
for k=1:63,
    if (a2(k,7)==0),
        c2(1,k)=1;
    else
        c2(1,k)=-1; 
    end
end
%产生输入随机数和高斯白噪声,1,-1序列
x1=randn(1000,1);
x2=randn(1000,1);
for i=1:1000,
    if x1(i,1)<0,
        x1(i,1)=-1;
    else
        x1(i,1)=1;
    end
end
for i=1:1000,
    if x2(i,1)<0,
        x2(i,1)=-1;
    else
        x2(i,1)=1;
    end
end
r=0;
for i=1:63,
    r=r+c1(1,i)*c2(1,i);
end
r=r/63;
R=[1,r;r,1];
%做乘积运算
z1=zeros(1000,1);
z2=zeros(1000,1);
for i=1:1000,
    noise=normrnd(0,q,63,1);
    z1(i,1)=c1*noise/63;
    z2(i,1)=c2*noise/63;
end
    yy1=zeros(1000,1);
    yy2=zeros(1000,1);
    y1=A*x1+2*A*r*x2+z1;
    y2=2*A*x2+r*x1+z2;
    W=[A,0;2*A,0];
for i=1:1000
    Y(1,i)=y1(i,1);
    Y(2,i)=y2(i,1);
end 
YY=inv(R)*Y;
for i=1:2
    for j=1:1000
        if YY(i,j)<0
            YY(i,j)=-1;
        else
            YY(i,j)=1;
        end
    end
end
yy1=YY(1,:);
yy2=YY(2,:);
n1=yy1-x1';
n2=yy2-x2';
biterr1=zeros(1,1);
biterr2=zeros(1,1);
for i=1:1000
    if n1(i)==0
        biterr1=biterr1;
    else
        biterr1=biterr1+1;
    end
    if n2(i)==0
        biterr2=biterr2;
    else
        biterr2=biterr2+1;
    end
end
err1(q+1)=biterr1/1000;
err2(q+1)=biterr2/1000;
SINR1(q+1)=A/(2*A+q);
SINR2(q+1)=2*A/(A+q);
   end
end
semilogy(err1,SINR1,'*m')
hold on
grid on
semilogy(err2,SINR2,'vb')
legend('用户1','用户2')
xlabel('SINR')
ylabel('误码率')
title('解相关检测')
hold off

⌨️ 快捷键说明

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