📄 jafarkhani.m
字号:
Nt=4;%发射天线数为4
Nr=1;%接收天线数为1
min_snr=5;
max_snr=35;%最大的信噪设定为15
symbol_per_frame=120;%每一帧的符号数为120个
tot_frame_tx=zeros(1,(max_snr-min_snr)/2+1);
tot_err_bit=zeros(1,(max_snr-min_snr)/2+1);
for snr=min_snr:2:max_snr
display(snr);
for ii=1:50000
D1=zeros(1,16);
D2=zeros(1,16);
tot_frame_tx((snr-min_snr)/2+1) = tot_frame_tx((snr-min_snr)/2+1)+1;
bit_sequence = rand(1,symbol_per_frame * 3)>0.5; %生成伪随机二进制待发送序列
qpsk_sequence = Eightpsk(bit_sequence); %二进制信道与QPSK信号的转换
sig =sqrt(4/(10^(snr/10))); %归一化的噪声能量
addtional_gaussian_noise =sig * (randn(Nr,Nt,symbol_per_frame)/sqrt(2) + j*randn(Nr,Nt,symbol_per_frame)/sqrt(2)); %生成加性高斯噪声
H=RayleighCH(Nr,Nt); %生成具有瑞利分布特性的信道衰落系数
for k=1:4:symbol_per_frame-3
X=[qpsk_sequence(k) -conj(qpsk_sequence(k+1)) -conj(qpsk_sequence(k+2)) qpsk_sequence(k+3);
qpsk_sequence(k+1) conj(qpsk_sequence(k)) -conj(qpsk_sequence(k+3)) -qpsk_sequence(k+2);
qpsk_sequence(k+2) -conj(qpsk_sequence(k+3)) conj(qpsk_sequence(k)) -qpsk_sequence(k+1);
qpsk_sequence(k+3) conj(qpsk_sequence(k+2)) conj(qpsk_sequence(k+1)) qpsk_sequence(k) ;];
R=H*X+addtional_gaussian_noise(:,:,k); %接收信号
a1=-conj(R(1,1))*H(1,1)-R(1,2)*conj(H(1,2))-R(1,3)*conj(H(1,3))-conj(R(1,4))*H(1,4);
b1=-conj(R(1,1))*H(1,4)+R(1,2)*conj(H(1,3))+R(1,3)*conj(H(1,2))-conj(R(1,4))*H(1,1);
c1=H(1,1)*conj(H(1,4))-conj(H(1,2))*H(1,3)-H(1,2)*conj(H(1,3))+conj(H(1,1))*H(1,4);
a2=-conj(R(1,1))*H(1,2)+R(1,2)*conj(H(1,1))-R(1,3)*conj(H(1,4))+conj(R(1,4))*H(1,3);
b2=-conj(R(1,1))*H(1,3)-R(1,2)*conj(H(1,4))+R(1,3)*conj(H(1,1))+conj(R(1,4))*H(1,2);
c2=H(1,2)*conj(H(1,3))-conj(H(1,1))*H(1,4)-H(1,1)*conj(H(1,4))+conj(H(1,2))*H(1,3);
d=abs(H(1,1))^2+abs(H(1,2))^2+abs(H(1,3))^2+abs(H(1,4))^2;
dh = [1 (1+j)/sqrt(2) j (-1+j)/sqrt(2) -1 (-1-j)/sqrt(2) -j (1-j)/sqrt(2);];
m=1;
for L=1:8
for LL=1:8
D1(m,1)=d*(abs(dh(1,L))^2+abs(dh(1,LL))^2)+2*real(a1*dh(1,L)+b1*dh(1,LL)+c1*dh(1,L)*conj(dh(1,LL)));
D1(m,2)=L;
D1(m,3)=LL;
m=m+1;
end
end
[minnumber1 position1]=min(D1(:,1));%求出最小的距离
X1=dh(D1(position1,2)); %估计出x1的值
X4=dh(D1(position1,3)); %估计出x2的值
m=1;
for L=1:8
for LL=1:8
D2(m,1)=d*(abs(dh(1,L))^2+abs(dh(1,LL))^2)+2*real(a2*dh(1,L)+b2*dh(1,LL)+c2*dh(1,L)*conj(dh(1,LL)));
D2(m,2)=L;
D2(m,3)=LL;
m=m+1;
end
end
[minnumber2 position2]=min(D2(:,1));%求出最小的距离
X2=dh(D2(position2,2)); %估计出x1的值
X3=dh(D2(position2,3)); %估计出x2的值
if(X(1,1)~=X1) %计算Gray mapping时bit错误的个数
tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)++table(X(1,1),X1);
end
if(X(2,1)~=X2) %计算Gray mapping时bit错误的个数
tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)++table(X(2,1),X2);
end
if(X(3,1)~=X3) %计算Gray mapping时bit错误的个数
tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)++table(X(3,1),X3);
end
if(X(4,1)~=X4)
tot_err_bit((snr-min_snr)/2+1)=tot_err_bit((snr-min_snr)/2+1)++table(X(4,1),X4);
end
end
end
end
%在不同信噪比条件下,求系统SER和BER
ber_snr=tot_err_bit./(tot_frame_tx * symbol_per_frame*3);
figure(1);
semilogy(min_snr:2:max_snr,ber_snr,'-*');
grid
xlabel('SNR');
ylabel('Error Ratio');
legend('SER-SNR','BER-SNR');
title('Ideal CSI');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -