?? af_df.asv
字號:
function AF_DF(maxsnr)
fprintf( 'AF_DF仿真\n') ;
%產生隨機序列
N=5000;
BerSnrTable1 = zeros(maxsnr+1,3);
for SNR=0:maxsnr
BerSnrTable1(SNR+1,1) = SNR;
BitTx=floor(rand(1,N)*2);
%星座圖映射,QPSK
SymQpsk=QpskMapping(BitTx);
SymQpskd=[];
M=length(SymQpsk);
%噪聲能量(已歸一化)
zsnl=sqrt(1/(10^((SNR)/10)));
%==========================================
for i=1:M
%生成服從高斯分布的信道系數
H0=randn+j*randn;
H2=randn+j*randn;
%生成加性高斯白噪聲
N0=zsnl*(randn+j*randn);
N2=zsnl*(randn+j*randn);
N1=zsnl*(randn+j*randn);
G=sqrt(0.5/(0.5+zsnl*zsnl));
%接收信號
R1=H0*SymQpsk(i)+N0;
R2=H2*G*(SymQpsk(i)+N1)+N2;
%信號合成
S1=conj(H0)*R1/(zsnl*zsnl);
S2=conj(H2)*R2/(zsnl*zsnl);
SS=S1+S2;
%解調
dh = [1+j -1+j -1-j 1-j]/sqrt(2);
D1=abs(SS*[1 1 1 1]-dh).^2;
[minScale1 positionmin1]=min(D1);
SymQpskd=[SymQpskd dh(positionmin1)];
end
BitRx=QpskInverseMapping(SymQpskd);
[Num,Ber]=symerr(BitTx,BitRx);
BerSnrTable1(SNR+1,2) = Num ;
BerSnrTable1(SNR+1,3) = Ber ;
end
%產生隨機序列
N=5000;
BerSnrTable2=zeros(maxsnr+1,3);
for SNR=0:maxsnr
BerSnrTable2(SNR+1,1) = SNR;
BitTx=floor(rand(1,N)*2);
Symblock=reshape(BitTx,100,50);%未加CRC的信息幀矩陣結構,每一行為一幀
CrcSymblock=zeros(100,66);%為存儲加了CRC的信號做準備
CrcSymblock1=zeros(100,66);
CrcSymblock2=zeros(100,66);
RR1=zeros(100,50);
BitRRx=zeros(100,66);
BitR=zeros(100,50);
for i=1:100
%在信號楨中加入CRC,以50個比特為一幀
CrcSymblock(i,:)=crc(Symblock(i,:));
%星座圖映射,QPSK
SymQpsk=QpskMapping(CrcSymblock(i,:));
SymQpskd=[];
M=length(SymQpsk);
%噪聲能量(已歸一化)
zsnl=sqrt(1/(10^((SNR)/10)));
%==========================================
%生成加性高斯白噪聲
N1=zsnl*(randn(1,M)+j*randn(1,M));
%============================================
%中繼接受信號
R1=SymQpsk+N1;
%Qpsk解調
for k=1:M
dh = [1+j -1+j -1-j 1-j]/sqrt(2);
D1=abs(R1(k)*[1 1 1 1]-dh).^2;
[minScale1 positionmin1]=min(D1);
SymQpskd=[SymQpskd dh(positionmin1)];
end
R1d=QpskInverseMapping(SymQpskd);
%CRC 解調
remainder=decrc16(R1d);
if isequal(remainder,[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);
% 去掉CRC碼
RR1(i,:)=R1d(1,1:50);
%在信號楨中加入CRC,以50個比特為一幀
CrcSymblock1(i,:)=crc(RR1(i,:));
%星座圖映射,QPSK
SymQpsk1=QpskMapping(CrcSymblock1(i,:));
SymQpskd1=[];
for l=1:M
%生成加性高斯白噪聲
N0=zsnl*(randn+j*randn);
N2=zsnl*(randn+j*randn);
R0=SymQpsk(l)+N0;
R2=SymQpsk1(l)+N2;
%信號合成
S1=R0/zsnl*zsnl;
S2=R2/zsnl*zsnl;
SS=S1+S2;
%解調
dh = [1+j -1+j -1-j 1-j]/sqrt(2);
D1=abs(SS*[1 1 1 1]-dh).^2;
[minScale1 positionmin1]=min(D1);
SymQpskd1=[SymQpskd1 dh(positionmin1)];
end
BitRRx(i,:)=QpskInverseMapping(SymQpskd1);
BitR(i,:)=BitRRx(i,1:50);
else
CrcSymblock2=crc(Symblock(i,:));
%星座圖映射,QPSK
SymQpsk2=QpskMapping(CrcSymblock(i,:));
SymQpskd2=[];
M=length(SymQpsk2);
for l=1:M
N0=zsnl*(randn+j*randn);
R0=SymQpsk(l)+N0;
%解調
dh = [1+j -1+j -1-j 1-j]/sqrt(2);
D1=abs(R0*[1 1 1 1]-dh).^2;
[minScale1 positionmin1]=min(D1);
SymQpskd2=[SymQpskd2 dh(positionmin1)];
end
BitRRx(i,:)=QpskInverseMapping(SymQpskd2);
% 去掉CRC碼
BitR(i,:)=BitRRx(i,1:50);
end
end
BitRx=reshape(BitR,1,N);
[Num,Ber]=symerr(BitTx,BitRx);
BerSnrTable2(SNR+1,2) = Num ;
BerSnrTable2(SNR+1,3) = Ber ;
end
figure(1);
semilogy(BerSnrTable1(:,1),BerSnrTable1(:,3),'g*-',BerSnrTable2(:,1),BerSnrTable2(:,3),'ro-');
xlabel('SNR');
ylabel('BER');
title('AF和DF的RER比較');
h = legend('AF','DF',2);
set(h,'Interpreter','none');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -