📄 mingyangchen.m
字号:
function MYC
Nt=4;%发射天线数为4
Nr=1;%接收天线数为1
max_snr=25;%最大的信噪设定为15
symbol_per_frame=120;%每一帧的符号数为120个
tot_frame_tx=zeros(1,max_snr+1);
tot_err_symbol =zeros(1,max_snr+1);
tot_err_bit=zeros(1,max_snr+1);
for snr=0:max_snr
for ii=1:10000
tot_frame_tx(snr+1) = tot_frame_tx(snr+1)+1;
bit_sequence = rand(1,symbol_per_frame * 2)>0.5; %生成伪随机二进制待发送序列
qpsk_sequence = QpskMapping(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) j*(qpsk_sequence(k+1)) -conj(qpsk_sequence(k+2)) -conj(qpsk_sequence(k+3));
qpsk_sequence(k+1) qpsk_sequence(k) j*conj(qpsk_sequence(k+3)) -conj(qpsk_sequence(k+2));
qpsk_sequence(k+2) j*(qpsk_sequence(k+3)) conj(qpsk_sequence(k)) conj(qpsk_sequence(k+1));
qpsk_sequence(k+3) qpsk_sequence(k+2) -j*conj(qpsk_sequence(k+1)) conj(qpsk_sequence(k)) ;];
R=H*X+addtional_gaussian_noise(:,:,k); %接收信号
r1=R(1,1)*conj(H(1,1))+R(1,2)*conj(H(1,2))+conj(R(1,3))*H(1,3)+conj(R(1,4))*H(1,4);
r2=R(1,1)*conj(H(1,2))-j*R(1,2)*conj(H(1,1))-j*conj(R(1,3))*H(1,4)+conj(R(1,4))*H(1,3);
r3=R(1,1)*conj(H(1,3))+R(1,2)*conj(H(1,4))-conj(R(1,3))*H(1,1)-conj(R(1,4))*H(1,2);
r4=R(1,1)*conj(H(1,4))-j*R(1,2)*conj(H(1,3))+j*conj(R(1,3))*H(1,2)-conj(R(1,4))*H(1,1);
h1=conj(H(1,1))*H(1,2)+j*H(1,1)*conj(H(1,2))+j*H(1,3)*conj(H(1,4))+conj(H(1,3))*H(1,4);
h2=H(1,3)*conj(H(1,4))-j*conj(H(1,3))*H(1,4)-j*conj(H(1,1))*H(1,2)+H(1,1)*conj(H(1,2));
d=abs(H(1,1))^2+abs(H(1,2))^2+abs(H(1,3))^2+abs(H(1,4))^2;
dh = [1+j 1+j;1+j -1+j;1+j -1-j;1+j 1-j;
-1+j 1+j;-1+j -1+j;-1+j -1-j;-1+j 1-j;
-1-j 1+j;-1-j -1+j;-1-j -1-j;-1-j 1-j;
1-j 1+j;1-j -1+j;1-j -1-j;1-j 1-j;]/sqrt(2);
for L=1:16
D1(L)=d*(abs(dh(L,1))^2+abs(dh(L,2))^2)+2*real(conj(-r1)*dh(L,1))+2*real(conj(-r2)*dh(L,2))+real(conj(h1)*dh(L,1)*conj(dh(L,2))+conj(h2)*conj(dh(L,1))*dh(L,2));
end
[minnumber1 position1]=min(D1);%求出最小的距离
X1=dh(position1,1); %估计出x1的值
X2=dh(position1,2); %估计出x2的值
for L=1:16
D2(L)=d*(abs(dh(L,1))^2+abs(dh(L,2))^2)+2*real(conj(-r3)*dh(L,1))+2*real(conj(-r4)*dh(L,2))+real(conj(h1)*dh(L,1)*conj(dh(L,2))+conj(h2)*conj(dh(L,1))*dh(L,2));
end
[minnumber1 position2]=min(D2);%求出最小的距离
X3=dh(position2,1); %估计出x1的值
X4=dh(position2,2); %估计出x2的值
if(X(1,1)~=X1)
tot_err_symbol(snr+1)=tot_err_symbol(snr+1)+1;
if((X(1,1)+X1)==0)
tot_err_bit(snr+1)=tot_err_bit(snr+1)+2;
else
tot_err_bit(snr+1)=tot_err_bit(snr+1)+1;
end
end
if(X(2,1)~=X2)
tot_err_symbol(snr+1)=tot_err_symbol(snr+1)+1;
if((X(2,1)+X2)==0)
tot_err_bit(snr+1)=tot_err_bit(snr+1)+2;
else
tot_err_bit(snr+1)=tot_err_bit(snr+1)+1;
end
end
if(X(3,1)~=X3)
tot_err_symbol(snr+1)=tot_err_symbol(snr+1)+1;
if((X(3,1)+X3)==0)
tot_err_bit(snr+1)=tot_err_bit(snr+1)+2;
else
tot_err_bit(snr+1)=tot_err_bit(snr+1)+1;
end
end
if(X(4,1)~=X4)
tot_err_symbol(snr+1)=tot_err_symbol(snr+1)+1;
if((X(4,1)+X4)==0)
tot_err_bit(snr+1)=tot_err_bit(snr+1)+2;
else
tot_err_bit(snr+1)=tot_err_bit(snr+1)+1;
end
end
end
end
end
%在不同信噪比条件下,求系统SER和BER
ser_snr=tot_err_symbol./(tot_frame_tx * symbol_per_frame) ;
ber_snr=tot_err_bit./(tot_frame_tx * symbol_per_frame*2);
figure(1);
semilogy(0:max_snr,ser_snr,'-o');
grid
hold on
semilogy(0:max_snr,ber_snr,'-*');
xlabel('SNR');
ylabel('Error Ratio');
legend('SER-SNR','BER-SNR');
title('Ideal CSI');
hold off
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -