⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 convolution_encoder.m

📁 卷积 解码部分 maltb编程 encoder
💻 M
字号:
Convolutional(2,1,6) Encoder and soft decision Viterbi Decoder 
>> 
cla; 
> Generate the trellis of convolutional(2,1,6) 
codeRate = 1/2; constlen = 7; codegen = [171 133]; 
trellis = poly2trellis(constlen, codegen); > Define trellis. 
>> 
> Generate binary message 
N = 6048; msg_orig = randsrc(N, 1, 0:1); 

> Convolutional Encoder. 
puncpat = [1 1 0 1]; > [X1 Y1 Y2] 2/3 puncture pattern 
[msg_enc_bi] = convenc(msg_orig, trellis, puncpat); 

> 64-QAM Gray Encoder 
[msg_gr_enc_bi map] = bin2gray(msg_enc_bi,'qam',64); 

> Mapping to QAM constellation 
M = 64; k = log2(M); > 64-QAM 
msg_gr_enc = bi2de(reshape(msg_gr_enc_bi,size(msg_gr_enc_bi,2)*k,size(msg_gr_enc_bi,1)/k)'); 
msg_tx = pskmod(msg_gr_enc, M, pi/4); 

> Pulse shaping 
Nsamp = 6; msg_tx = rectpulse(msg_tx, Nsamp); 

> AWGN 
SNR = 25; msg_rx = awgn(msg_tx,SNR); 
h = scatterplot(msg_rx); hold on; grid on; > Scatter Plot 
>> 
> Demodulate &amt; Detect the transmitted symbols 
msg_rx_int = intdump(msg_rx, Nsamp); 
Downsample 
msg_gr_demod = pskdemod(msg_rx_int, M, pi/4); 

> Gray Decoder 
msg_gr_demod_bi = de2bi(msg_gr_demod,k)'; msg_gr_demod_bi = msg_gr_demod_bi(:); 
msg_demod_bi = gray2bin(msg_gr_demod_bi,'qam',64); 

>> 
> Viterbi Decoder 
tblen = 96; nsdec = 1; > most confident [0 2^nsdec-1] 
msg_dec = vitdec(msg_demod_bi, trellis, tblen, 'cont','soft',nsdec, puncpat); 

>> 
> Calculate the bit error rate. 
[nChnlErrs BERChnl] = biterr(msg_enc, msg_demod); 
[nCodErrs BERCoded] = biterr(msg_orig(1:end-tblen), msg_dec(1+tblen:end)); 
disp(['Channel Error BER ']); disp([nChnlErrs BERChnl]); 
disp(['Decode Error BER ']); disp([nCodErrs BERCoded]); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -