Viterbi Decoding Algorithm for Convolutional Codes
Program1:
input_seq = [1 0 1]; % Original input sequence
input_seq = [1 0 1]; % Original input sequence
g = [1 0 1; 1 1 1]; % Generator polynomials for (2,1) code
% Create trellis structure
trellis = poly2trellis(3,[5,7]);
% Convolutional encoding
encoded_seq = convenc(input_seq, trellis);
disp('Encoded Sequence:');
disp(encoded_seq);
% Simulate transmission with noise (introducing errors)
received_seq = encoded_seq;
% error_indices = randperm(length(encoded_seq), 2); % Introduce
2 errors
% received_seq(error_indices) = ~received_seq(error_indices); %
Flip bits
% disp('Received Sequence (with errors):');
disp(received_seq);
% Viterbi decoding
decoded_seq = vitdec(received_seq, trellis, 2, 'trunc','hard');
disp('Decoded Sequence:');
disp(decoded_seq);
Program2
trellis = poly2trellis([4 3],[4 5 17;7 4 2]);
x = ones(100,1);
code = convenc(x,trellis);
tb = 2;
decoded = vitdec(code,trellis,tb,'trunc','hard');
isequal(decoded,ones(100,1))
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter