📄 pic.m
字号:
% 于明亮 065427 06.12.07
inf_num=50000; %每个用户的信息比特数量
N=randn(inf_num,31); %噪声矩阵N
user=[2,4,16]; %用户数矩阵
M=length(user); %索引用户数
Err=zeros(1,M); %传统检测下的误码率
Err_pic=zeros(1,M); %PIC检测下的误码率
%%%%%%%%%%%%%%%%%%%%%%%% 传统检测器 %%%%%%%%%%%%%%%%%%%%%%%
for k=1:M;
user_inf=sign(randn(user(k),inf_num)); %用户比特信息
sf_code=sf_matrix(user(k)); %根据用户的数量获得相应的扩频码
y=user_inf'*sf_code; %调制,扩频
r=(10^(6.89/20))*y+sqrt(31)*N; %经过AWGN信道后的用户信息状态
y1=r*sf_code'/31; %解扩,积分,抽样
b1=sign(y1); %判决
e=nnz(b1'-user_inf); %计算传统误码总数
Err(k)=e/(inf_num*user(k)); %计算传统检测误码率
%%%%%%%%%%%%%%%%%%%%%%%% PIC检测器 %%%%%%%%%%%%%%%%%%%%%%%
y2=zeros(inf_num,user(k)); %初始化PIC检测器的前一轮检测值
for i=1:user(k);
q=zeros(inf_num,31); %初始化i用户以外的MAI之和
for s=1:user(k);
if s==i;
continue;
else
q=q+b1(:,s)*sf_code(s,:); %计算i用户以外的MAI之和
end
end
y2(:,i)=(r-q)*sf_code(i,:)'/31; %i用户解扩后的值
end
z=sign(y2); %判决
e_pic=nnz(z'-user_inf); %计算PIC检测误码总数
Err_pic(k)=e_pic/(inf_num*user(k)); %计算PIC检测下的误码率
end;
plot(user,Err,'g') %两种检测误码率性能对比图
xlabel('用户数');ylabel('Err');
title('误码率~用户数曲线');
text(3,0.016,'Eb/No=6.89dB AWGN QPSK')
hold on
plot(user,Err_pic)
legend('传统检测','PIC检测')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -