📄 test_qpsk_picmud.m
字号:
clc
clear
k=16; %用户数为k
numbits=10000; %比特序列数
exno=2:1:20; %Eb/N0
BER=zeros(k,length(exno)); %PIC k个用户的误码率
ber=zeros(k,length(exno)); %NOPIC k个用户的误码率
BER1=zeros(1,length(exno)); %PIC的误码率
BER2=zeros(1,length(exno)); %NOPIC的误码率
bits_add=bitgene(k); %产生扩频码
S=zeros(1,numbits*31/2); %经过QPSK调制的信号
SS=zeros(k,numbits*31/2); %QPSK调制与扩频后的信号
S_out=zeros(k,numbits);
bits=zeros(k,numbits); %产生的随机信号
bits_double=zeros(k,numbits); %对产生的随机信号double
%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:k
bits(i,:)=Sbits(numbits);
bits_double(i,:)=double(bits(i,:));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%QPSK调制&&扩频%%%%%%%%%%%%%%%%%%%%%%%%%%%
for x=1:k
S_qpsk(x,:)=QPSK_mod(bits_double(x,:));
SS(x,:)=cdma(S_qpsk(x,:),bits_add(x,:));
S(1,:)=SS(x,:)+S(1,:);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%加入噪声%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SNR=exno-10*log10(31/2);
output=Gnoise(S(1,:),SNR);
%%%%%%%%%%%%%%%%%%%%%%%%%%%PICMUD与解扩%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for y=1:length(exno)
[bits_out,S_out,r]=picmud(output(y,:),bits_add,k); %bis_out为PIC的信号 S_out为NOPIC的信号,均为k行信号
for z=1:k
bits_qpskout(z,:)=DEQPSK(bits_out(z,:));
S_qpskout(z,:)=DEQPSK(S_out(z,:));
BER(z,y)=Error(bits_qpskout(z,:),bits_double(z,:));
ber(z,y)=Error(S_qpskout(z,:),bits_double(z,:));
end
end
semilogy(exno,BER(1,:),'^k-');
hold on
semilogy(exno,ber(1,:),'+r-');
xlabel('Eb/No');
ylabel('BER');
title('单用户匹配滤波与并行干扰删除多用户检测误码率比较');
legend('一级PICMUD','匹配滤波');
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -