⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reedsalomon.m

📁 802.16-wimax系统物理层的仿真代码
💻 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 + -