📄 main.asv
字号:
clc,clear
Len_frame=1024;
Multipath=[1 0 0 0 0 0.707];%有延迟五个码片的多径信号
SNRdb=0:10;
LenSNR=length(SNRdb);
Nframe=100;
alpha=0;
Gt=1/4;%循环前缀大小
for am=1:LenSNR%循环实现不同的信噪比
Totalerror=0;%错误码元的个数
for ab=1:Nframe
Data_in=randint(1,Len_frame);%产生0,1随机数
alpha=randperm(length(Data_in));%随机交织
InterCode=Data_in(alpha);%交织后的编码序列
%数字调制---串并转换---ifft----并串转换----加cp
MappCode=mapping16QAM(InterCode);%--------------------------BPSK映射
BingCode=reshape(MappCode,length(MappCode),1);%-------------------串并转换
IfftCode=ifft(BingCode);%----------------------------------------------傅里叶反变换
ChuanCode=reshape(IfftCode,1,length(IfftCode));%---------------------------------并串转换
CpCode=[ChuanCode(floor(length(ChuanCode)*(1-Gt))+1:end),ChuanCode];%-------------------------加循环前缀
%==========================加噪==================================
awgn_info=awgn(CpCode,SNRdb(am),'measured');
%==============================加多经================================
if ~isempty(Multipath)
BaseSignal_filter=filter(Multipath,1,awgn_info);%用滤波实现
end
%=====================================
%接收部分
%=====================================
%去cp---串并---fft---并串---反映射----去交织
%=============================================
Cp1Code=[awgn_info(floor(length(awgn_info))*1/(1+1/Gt)+1:end)];%-----------------去cp
Bing1Code=reshape(Cp1Code,length(Cp1Code),1);%----------------------------------------串并
FftCode=fft(Bing1Code);%---------------------------------------------------------------------------fft变换
Chuan1Code=reshape(FftCode,1,length(FftCode));%--------------------------------------------------------------------串并转换
%data_demapp=demapping16QAM(Chuan1Code);%-----------------------------------------------------------------------------------------反映射
data_demapp=demapping16QAM(BaseSignal_filter);%反映射
Data_out=derandperm(data_demapp,alpha);%解交织
Error=biterr(Data_in,Data_out);%Error为一帧信号中的错误码元个数
Totalerror=Totalerror+Error;%统计总错误码元个数
end
Totalber=Totalerror/(Nframe*Len_frame);%统计总误码率
%Totalber_AWGN(am)=Totalber;
Totalber_Multipath(am)=Totalber;
fprintf('%dB %d\n',SNRdb(am),Totalber);%输出当前信噪比下的误码率
end
%save dataAWGN Totalber_AWGN
save dataMultipath Totalber_Multipath
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -