📄 scfde_timing_effect_ber.asv
字号:
clear all;
%仿真参数
nca=256; %子载波数(每帧数据数)
ncp=32; %CP长度
nsubm=16; %子载波调制进制数
h=[1;zeros(6,1);0.5623;zeros(11,1);0.3162]; %SUI-5
% h=[0.6+0.6*i;zeros(6,1);0.6;0;0;0.5*i;zeros(10,1);0.2-0.1*i;zeros(8,1);0.3;0];
H=fft(h,nca); %信道参数
for snr=1:20
if(snr<=8)
frame=50;
elseif (snr>=9)&(snr<=15)
frame=100;
elseif((snr>=15)&(snr<=18))
frame=200;
elseif((snr>=18)&(snr<=21))
frame=300;
elseif((snr>=22)&(snr<=23))
frame=500;
elseif(snr>=24)&(snr<=25)
frame=800;
end
for m=1:frame
%SC-FDE 发射
%产生数据-------------------------------------------------------------------
s(:,m)=randint(nca,1,nsubm); %产生信源
% s_map=qammod(s(:,m),nsubm); %映射
[sreal,simag]=qaskenco(s(:,m),nsubm);
s_map=sreal+i*simag;
s_addcp=zeros((nca+ncp),1);
s_addcp(1:ncp)=s_map((nca-ncp+1):nca); %加CP
s_addcp((ncp+1):(ncp+nca))=s_map(1:nca);
%--------------------------------------------------------------------------
%过信道
s_pfading=filter(h,1,s_addcp); %过多径
s_pf_addawgn=awgn(s_pfading,snr,'measured'); %加噪声
%SC-FDE 接收
r_removecp=s_pf_addawgn((ncp+1):(ncp+nca)); %去CP
r_fft=fft(r_removecp,nca); %将接收信号转换到频域
%均衡-----------------------------------------------------------------------
% %Forcing zero==============================================================
% r_fde=r_fft./H;
% %==========================================================================
%MMSE======================================================================
snr_pow=10^(snr/10); %信号和噪声的功率比
% r_pow=sum(abs(r_fft).^2); %计算接收到信号的功率
% n_pow=r_pow/snr_pow; %噪声功率
% npow_point=n_pow/nca; %每点的噪声功率
% snrpow_point=((abs(r_fft)).^2)./npow_point;
% H_eq=1./(H.*(1+1./(snrpow_point)));
snrpow_point=snr_pow.*nca.*(abs(H).^2)/sum(abs(H).^2); %每点的信号噪声功率比
H_eq=1./(H.*(1+1./snrpow_point)); %均衡系数
r_fde=r_fft.*H_eq; %均衡后信号
%==========================================================================
%--------------------------------------------------------------------------
%子载波解调-----------------------------------------------------------------
r_map=ifft(r_fde,nca); %将信号转换回时域
% r(:,m)=qamdemod(r_map,nsubm);
rreal=real(r_map);
rimag=imag(r_map);
r(:,m)=qaskdeco(rreal,rimag,nsubm); %解映射
%--------------------------------------------------------------------------
end
[numberb(snr),ratiob(snr)]=biterr(s,r);
snr
end
figure;
semilogy(1:snr,ratiob,'-o');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -