%% [0、预处理]
clc;
clear;
clf;
close all;
%% [1、配置参数]
N=100000; %数据点数(个)
SNR_dB=0:1:30; %信噪比(dB形式)
SNR=10.^(SNR_dB/10); %信噪比(一般形式,Eb/N0)
Ps=1; %信号功率,为1时其dB形式为0。
Pn=Ps./SNR; %噪声功率
y=zeros(4,N); %判决变量
Demod=zeros(4,N); %解调信号
Error_Count=zeros(1,length(SNR_dB)); %码元错误个数
BER=zeros(1,length(SNR_dB)); %误码率
%% [3、处理]
for i=1:length(SNR_dB)
for j=1:N
sn=randi([0,1],4,1); %产生随机信号
mod_sn=pskmod(sn,2);
H=(randn(4,4) +1i*randn(4,4))./sqrt(2); %复高斯瑞利信道,均值为0+0i,方差为1
noise=sqrt(Pn(i)/2)*(randn(4,1)+1i*randn(4,1)); %高斯白噪声
Beita=(4/trace(inv(H*H')))^(1/2);%功率因数
W=H'*inv(H*H');%信道的伪逆矩阵
S=W*mod_sn;
y=Beita*H*S+noise;
Demod=pskdemod(y,2); %BPSK解调
ErrorCount_Temp=find(Demod~=sn); %错误判决
Error_Count(i)=length(ErrorCount_Temp)+Error_Count(i);
end
BER(i)=Error_Count(i)/N/4; % 仿真误码率
end
%% [4、显示结果]
semilogy(SNR_dB,BER,'go-');
axis([0 30 10^-4 10^0]);
xlabel('信噪比SNR/dB'); %横轴坐标
ylabel('误码率BER'); %纵轴坐标
title("迫0检测预处理仿真误码率");
grid on; %显示表格线