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

📄 kuopin.m

📁 一个四用户的扩频通信系统
💻 M
字号:
Lc=8;
%plot_EbNo = -20:1:5;
plot_EbNo = -10:1:10;
err=zeros(size(plot_EbNo));%误比特计数器,zeros产生0矩阵,size 查询矩阵的阶数 
n=1;
%--------------walsh码-----------------------------%

w=hadamard(16);  %返回16阶hadamard方阵,增益为16
usr1_code=w(1,:); %用户1
usr2_code=w(2,:); %用户2
usr3_code=w(3,:); %用户3
usr4_code=w(4,:); %用户4
for i=1:3
 usr1_code = [usr1_code usr1_code];%8倍
 usr2_code = [usr2_code usr2_code];
 usr3_code = [usr3_code usr3_code];
 usr4_code = [usr4_code usr4_code];
end

for i=1:16*8
 w1_code((1+(i-1)*25):i*25)=usr1_code(i); 
 w2_code((1+(i-1)*25):i*25)=usr2_code(i);
 w3_code((1+(i-1)*25):i*25)=usr3_code(i);
 w4_code((1+(i-1)*25):i*25)=usr4_code(i); 
end
%---------------------信息码--------------------------%
code_length=32;                       %信息码元个数8
N=1:code_length;
x1=randsrc(1, code_length, [-1 1]); %信息码1,randsrc 根据给定的数字表产生随机矩阵
x2=randsrc(1, code_length, [-1 1]); %信息码2
x3=randsrc(1, code_length, [-1 1]); %信息码3
x4=randsrc(1, code_length, [-1 1]); %信息码4
for i=1:code_length
 s1((1+(i-1)*100):i*100)=x1(i); 
 s2((1+(i-1)*100):i*100)=x2(i); 
 s3((1+(i-1)*100):i*100)=x3(i); 
 s4((1+(i-1)*100):i*100)=x4(i); 
end
t=1:code_length*100;
%----------------------------------------------------%
for EbNo=plot_EbNo;    %db  
 Eb_No=EbNo;
 Eb_No=10.^(Eb_No/10); %换回普通比值
 No=1;                 %No为噪声,这里假定噪声功率的值
 Eb=No*Eb_No;           %1bit信号功率值
 Tb=1;
 Tc=Tb*Lc              ;%1bit的码片数
 E_chip=Eb/Tc;          %每一码片的功率
 NUM=1;
 Q=NUM;
 while Q
     Q=Q-1;
%----------------------扩频---------------------------%

 k1_code=sqrt(E_chip)*s1.*w1_code;%扩频,sqrt 平方根函数 
 k2_code=sqrt(E_chip)*s2.*w2_code;
 k3_code=sqrt(E_chip)*s3.*w3_code;
 k4_code=sqrt(E_chip)*s4.*w4_code;
 %k_code=k1_code+k2_code+k3_code+k4_code;
 t=1:25*16*8;
%----------------------调制--------------------------%

 AI=1;
 for i=1:16*16*25
     cI(i)=AI*cos(2*pi*i/25);
 end
 for i=1:16*8
  signal1((1+(i-1)*25):i*25)=k1_code((1+(i-1)*25):i*25).*cI((1+(i-1)*25):i*25);
  signal2((1+(i-1)*25):i*25)=k2_code((1+(i-1)*25):i*25).*cI((1+(i-1)*25):i*25);
  signal3((1+(i-1)*25):i*25)=k3_code((1+(i-1)*25):i*25).*cI((1+(i-1)*25):i*25);
  signal4((1+(i-1)*25):i*25)=k4_code((1+(i-1)*25):i*25).*cI((1+(i-1)*25):i*25);
 end
%-----------------------AWGN信道------------------------%
 signal=signal1+signal2+signal3+signal4;
 sig_nor=No*awgn(signal,0.03);  %在信号signal中加入高斯白噪声。信噪比为0.03

%-------------------------解调--------------------------%
 for i=1:16*8
  signal_h((1+(i-1)*25):i*25)=sig_nor((1+(i-1)*25):i*25).*cI((1+(i-1)*25):i*25);
 end

%--------------------------低通-------------------------%

 wn=5/8; %截至频率wn=fn/(fs/2),这里的fn 为信息码(扩频码)的带宽5M
 b=fir1(8,wn);                            %fir滤波器,系数为8
 %H=freqz(b,1,16000);                       %计算数字滤波器在频域中的特性
 signal_d=filter(b,1,signal_h);            %一维数字滤波
%----------------------------解扩-----------------------%

jiek=signal_d.*w2_code;

%---------------------------判决-------------------------%

for i=1:32
    jian((1+100*(i-1):100*i))=sign(sum(jiek(1+100*(i-1):100*i)));
    end

for i=1:16*8
  if s2((1+25*(i-1):25*i))~=jian((1+25*(i-1):25*i));
    err(1,n)=err(1,n)+1;
  end
end
 end
n=n+1;
end

%---------------------波形图---------------------------%
figure (1);
plot(t,s2);
title('用户信息码');
axis([0,3200,-2,2])
figure (2);
plot(t,k2_code);
title('扩频波形');
axis([0,3200,-5,5])
figure (3);
plot(t,signal2);
title('调制波形');
axis([0,1000,-8,8])
figure (4);
plot(t,sig_nor);
title('信道波形');
axis([0,1000,-8,8])
figure (5);
plot(t,signal_h);
title('解调波形');
axis([0,1000,-8,8])
figure (6);
plot(t,jiek);
title('解扩波形');
axis([0,1000,-8,8])
figure (7);
plot(t,jian);
title('判决再生波形');
axis([0,3200,-2,2])
%---------------------误码率--------------------------%
Pe=err./(NUM*16*8*2)
figure (8);
plot(plot_EbNo,Pe)
%semilogy(plot_EbNo,Pe)
ylabel('误码率BER')
xlabel('Eb/No (dB)')
title('误比特率与信噪比例图');

⌨️ 快捷键说明

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