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

📄 viterbi.m

📁 802.16-wimax系统物理层的仿真代码
💻 M
字号:
function [codificado] = viterbi(msg,plantilla,Tx);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                                                                       %
%%     Archivo: viterbi.m                                                %
%%                                                                       %
%%     Descripci髇: Realizamos una codificaci髇 convolucional de tasa    %
%%      inicial de 1/2, posteriormente realizamos el proceso del         %
%%      puntured con la plantilla que se haya definido, dependiendo de   %
%%      tasa global que se quiera conseguir.                             %
%%     Si estamos recibiendo, la funci髇 se encarga de decodificar la    %
%%      secuencia recibida a trav閟 del algoritmo de Viterbi.            %
%%                                                                       %
%%     Par醡etros:                                                       %
%%       entrada-->Secuencia de bits a (de)codificar con el algoritmo    %
%%                                                                       %
%%     Resultado: Devuelve la cadena de bits (de)codificados seg鷑 se    %
%%       haya necesitado (dependiendo de la modulaci髇 y de la tasa)     %
%%                                                                       %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

t=poly2trellis(7, [133 171]);

bloque = length (plantilla);               % Longitud de la plantilla
codigo_final=[];
    
if Tx==1                                   % Si estoy transmitiendo y debo codificar.
    codigo = convenc(msg,t);
    codigo_punctured = codigo;
    bucle = length(codigo)/bloque;         % Veces que tengo que aplicar la plantilla.
   
    
    % DEPENDIENDO DEL MAPEO UTILIZADO, ME DEBO QUEDAR CON M罶 O MENOS BITS  
    % Realizo el puncturing, extrayendo los bits necesarios en cada caso
    for i=0:bucle-1
        muestra = codigo_punctured (i*bloque+1:(i+1)*bloque);
        for j=1:bloque
            if plantilla(j)==1
                codigo_final = [codigo_final muestra(j)];
            end
        end
    end
    
    codificado = codigo_final;
    
elseif Tx==0        % Si estoy recibiendo los datos, debo deshacer el proceso
    
    bucle= length(msg)/sum(plantilla);  % Veces que repito ahora el proceso.
    longitud = sum(plantilla);
    
    % Transmito 1s y -1s, para que ahora con el puntured se sepa qu

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -