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

📄 conv_vit_qam.m

📁 Convolutional(2,1,6) Encoder and soft decision Viterbi Decoder
💻 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 & 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 + -