使用Toolbox进行信道编码。首先,建立一个使用加性高斯白噪声信道的通信系统,不采取编码译码方式的系统模型;然后在该系统上加上卷积编码和硬判决译码的Viterbi译码器构成新的系统模型。然后我们会更新算法,使用软判决译码。
首先建立“精简”的系统模型:这里我们需要先封好一个function,在其中给我们建立的通信系统初始化一些参量,并且设置调制方式、信道类型、编码译码方式等等;function完成后我们需要一个main函数来调用function;
function代码块:精简的通信系统
function [ber,bits]=qpsk(EbNo,maxNumErrs,maxNumBits)
persistent Modulator AWGN Demodulator BitError %预设系统所需要的模块
if isempty(Modulator)
Modulator=comm.QPSKModulator('BitInput',true);
AWGN=comm.AWGNChannel;
Demodulator=comm.QPSKDemodulator('BitOutput',true);
BitError=comm.ErrorRate;
end
%初始化系统模块参量
FRM=2048;
M=4;
k=log2(M);
snr=EbNo+10*log10(k);
AWGN.EbNo=snr;
%处理系统发射机,信道,接收机
numErrs=0;
numBits=0;
results=zeros(3,1);
while((numErrs<maxNumErrs)&&(numBits<maxNumBits))
u=randi([0 1],FRM,1)
mod_sig=Modulator.step(u);
%发射机
rx_sig=AWGN.step(mod_sig);
%信道
demod=Demodulator.step(rx_sig);
%接收机
y=demod(1:FRM);
results=BitError.step(u,y);
numErrs=results(2);
numBits=results(3);
end
ber