Mostrando entradas con la etiqueta PRBS matlab. Mostrar todas las entradas
Mostrando entradas con la etiqueta PRBS matlab. Mostrar todas las entradas

lunes, 30 de noviembre de 2015

PRBS en Matlab



function [prbs,new_prbs]=SBPA(n,t_m,ancho)
% clc
% clear all
% close all
%se compara el número de bits(n) para saber cual es la posición del primer
%bit a comparar, de acuerdo a Landau (2006), pag 230
tocho=0;    %tocho será una bandera, si n vale 8 es uno, sino es cero
if n==3
    b1=1;
elseif n==5
    b1=3;
elseif n==7
    b1=4;
elseif n==8
    tocho=1;
elseif n==9
    b1=5;
elseif n==10
    b1=7;
else
    b1=n-1;
end

b2=n;   %b2 indica la posición del segundo bit a comparar
mceros=zeros(1,n); %se crea una matriz de ceros para comparar con la matriz m

%ciclo while para evitar que la matriz m generada aleatoriamente tenga solo
 %valores de 0, lo cual no permite generar una prbs
bceros=0; %bandera para comprobar que la matriz m no tenga solo valores de cero,
            %cambia a 1 cuando mceros y m son diferentes
           
%  while bceros==0    %mientras la matriz m sea de ceros se generará de nuevo la matriz m
%     m=round(rand(1,n)); %se crea una vector fila de tamaño n, con valores de 0 y 1
%     if mceros==m;       %si mceros es igual a m bceros es igual a cero
%         bceros=0;
%     else
%         bceros=1;       %si no son iguales bceros es igual a 1
%     end
% end
 m=ones(1,n); %se crea una vector fila de tamaño n, con valores de 1
prbs=ones(1,(2^n)-1); %se crea un vector fila de tamaño (2^n)-1,relleno con unos
                      %para despues sustituir con los valores de salida y formar la prbs
a=0;    % a guarda el resultado de la operación XOR con los bits indicados por b1 y b2

%ciclo for que realiza la operación XOR hasta llenar la prbs, se cicla
%hasta (2^n)-1
for i=1:1:(2^n)-1
   
    if tocho==1 %si n es igual a 8 se comparan 4 bits, las posiciones son 2, 3, 4 y 8
        a=xor(xor(m(2),m(3)),xor(m(4),m(8)));    %se guarda el resultado en a
    else %si n es diferente de 8 se comparan los bits indicados con b1 y b2
        a=xor(m(b1),m(b2));     %se guarda el resultado en a
    end
   
      prbs(i)=m(n);   %se agrega a la prbs en la posición i el valor de la matriz m en la posición n,
                        %lo cual es el bit de salida de la matriz m
        %for para recorrer los valores de la matriz m desde la posición 2 hasta (2^n)-1
        for j=n:-1:2
            m(j)=m(j-1);
        end
       
        m(1)=a; %a la matriz m en su posición 1, se le guarda el valor de a (resultado de la operación XOR)     
end
% figure
% stairs(prbs)
% figure
% % periodogram(prbs)
for i=1:((2^n)*ancho-ancho-ancho)/t_m
    new_prbs(i+ceil((ancho)/t_m))=prbs(ceil((i/ancho)*t_m));
end