Линейный блочный код с использованием MATLAB
Любая линейная смесь кодовых слов также является только кодовым словом. Итак, в кодировании линейный код - это код, исправляющий ошибки. Линейные коды обычно делятся на блочные коды и сверточные коды, несмотря на то, что турбокоды можно рассматривать как полукровку этих двух типов. Линейные коды учитывают более производительные вычисления кодирования и дешифрования, чем другие коды.
Линейные коды используются при упреждающей корректировке ошибок и применяются в методах для методов отправки символов (например, битов) по каналу связи, так что, если при передаче возникают ошибки, некоторые ошибки могут быть исправлены или распознаны получателем сообщения. блокировать. Кодовые слова в линейном блочном коде представляют собой блоки символов, которые кодируются с использованием большего числа символов, чем первый стимул, который должен быть отправлен.
Let us see the MATLAB code for Linear Block Code.
% Given H Matrix H = [1 0 1 1 1 0 0; 1 1 0 1 0 1 0; 0 1 1 1 0 0 1] k = 4; n = 7; % Generating G Matrix % Taking the H Matrix Transpose P = H"; % Making a copy of H Transpose Matrix L = P; % Taking the last 4 rows of L and storing L((5:7), : ) = []; % Creating a Identity matrix of size K x K I = eye(k); % Making a 4 x 7 Matrix G = [I L] % Generate U data vector, denoting all information sequences no = 2 ^ k % Iterate through an Unit-Spaced Vector for i = 1 : 2^k % Iterate through Vector with Specified Increment % or in simple words here we are decrementing 4 till we get 1 for j = k : -1 : 1 if rem(i - 1, 2 ^ (-j + k + 1)) >= 2 ^ (-j + k) u(i, j) = 1; else u(i, j) = 0; end % To avoid displaying each iteration/loop value echo off; end end echo on; u % Generate CodeWords c = rem(u * G, 2) % Find the min distance w_min = min(sum((c(2 : 2^k, :))")) % Given Received codeword r = [0 0 0 1 0 0 0]; r p = [G(:, n - k + 2 : n)]; %Find Syndrome ht = transpose(H) s = rem(r * ht, 2) for i = 1 : 1 : size(ht) if (ht(i,1:3)==s) r(i) = 1-r(i); break ; end end disp( "The Error is in bit:" ) disp(i) disp( "The Corrected Codeword is :" ) disp(r) |
Output:
H = 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 G = 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 no = 16 u = 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 c = 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 w_min = 3 r r = 0 0 0 1 0 0 0 ht = 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 1 s = 1 1 1 The Error is in bit: 4 The Corrected Codeword is : 0 0 0 0 0 0 0