Código de bloque lineal usando MATLAB

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *