Cualquier combinación lineal de palabras de código es igualmente una palabra de código solamente. Entonces, en la codificación, un código lineal es un código de corrección de errores. Los códigos lineales generalmente se dividen en códigos de bloque y códigos convolucionales, a pesar de que los códigos turbo pueden verse como una mezcla de estos dos tipos. Los códigos lineales tienen en cuenta cálculos de codificación y descifrado más productivos que los códigos diferentes.
Los códigos lineales se utilizan en el ajuste de errores de reenvío y se aplican en métodos para técnicas de envío de símbolos (por ejemplo, bits) en un canal de comunicaciones de modo que, si se producen errores en la comunicación, el beneficiario de un mensaje puede corregir o reconocer algunos errores. bloquear. Las palabras de código en un código de bloque lineal son bloques de símbolos que se codifican utilizando un mayor número de símbolos que el primer incentivo a enviar.
Veamos el código de MATLAB para el código de bloque lineal.
% 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)
Producción:
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
Publicación traducida automáticamente
Artículo escrito por sourabhnaikssj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA