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
No hay comentarios:
Publicar un comentario