?? reedsalomon.m
字號:
function [salida] = ReedSalomon(aleatorios,codigoRS,Tx);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %
%% Archivo: ReedSalomon.m %
%% %
%% Descripci髇: Realizamos la codificaci髇 de Reed-Salomon tal %
%% y como se indica en la norma %
%% %
%% Par醡etros: %
%% entrada-->Secuencia de bits a codificar con el algoritmo %
%% %
%% Resultado: Devuelve la cadena de bits codificados seg鷑 se %
%% haya necesitado (dependiendo de la modulaci髇) %
%% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
m = 8; % N鷐ero de bits por s韒bolo
n = codigoRS(1); % Longitud de la palabra del c骴igo
k = codigoRS(2); % N鷐ero de simbolos de informaci髇
% Para realizar el algoritmo de Reed-Solomon, necesito la informaci髇
% codificada en decimal, para ello realizo las siguientes operaciones:
aleatorios = reshape(aleatorios,8,length(aleatorios)/8)';
aleatorios = bi2de(aleatorios,'left-msb');
if Tx==1
% Como necesito una longitud de 36 bytes a la entrada, relleno con un
% cero al final del vector de los datos:
yk=[aleatorios' 0];
% Genero el vector de Galois, el polinomio generador del codigo y, por
% 鷏timo codifico los s韒bolos con el algoritmo de Reed-Salomon:
msg = gf([yk],m);
if n==k
codeRS = msg;
elseif n~=k
codeRS = rsenc(msg,n,k);
end
salida = codeRS.x;
elseif Tx==0
yk = aleatorios; % En el receptor no tengo que completar nada.
msg = gf([yk],m); % En este caso, deshago la codificaci髇.
if n==k
codeRS = yk;
elseif n~=k
codeRS = rsdec(msg',n,k);
codeRS = codeRS.x;
end
salida = codeRS(1:end-1);
end
% Lo paso a binario de nuevo para seguir trabajando en el transmisor:
salida = double (salida);
salida = de2bi (salida,8,'left-msb');
% Serializo los datos para la siguiente etapa.
salida = reshape (salida', 1, length(salida)*8);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -