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))