Generation
of PN sequence and verification of randomness properties [Matlab]
clc;
clear
all;
len = input
('Enter the
length of the sequence: ');
disp
('Generator
Polynomial Example [1 0 0 1...1] ');
poly = input
('Enter the
polynomial: ');
disp
('Initial
state Example [1 0 0 1...0]');
ini = input
('Enter the
initial state: ');
ff =
log2(len+1);
%pn
sequence generation
a =
zeros(len,ff);
a(1,(1:ff)) =
ini ;
for i =
1:(len-1)
x =
0;
for j =
2:(ff+1)
if (poly (1,j)
== 1)
x = xor
(x,a(i,(j-1)));
end
end
a ((i+1),1:ff)
= circshift(a(i,1:ff),[0 1]);
a ((i+1),1) =
x;
end
for i =
1:len
h(1,i) =
a(i,ff);
end
fprintf
('The
generated sequence is: \n');
disp
(h);
%balance
property
check =
0;
one =
0;
zero =
0;
for i =
1:len
if ( h(1,i) ==
0)
zero=
zero+1;
else
one =
one+1;
end
end
disp
('BALANCE
PROPERTY');
disp
('Number of
ones: ');
disp
(one);
disp
('Number of
zeros: ');
disp
(zero);
if ((one-zero)
== 1)
fprintf (
'Balance
property is satisfied\n\n');
else
fprintf (
'Balance
property is not satisfied\n\n');
check =
2;
end
%autocorelation
property
while (check ==
0)
for i=
1:len
y(i,:) = xor
(h,circshift(h,[0 i]));
end
for i =
1:len
one =
0;
zero =
0;
for j =
1:len
if ( y(i,j) == 0
);
zero =
zero+1;
else
one =
one+1;
end
end
z(i,1) = zero
- one;
end
for i = 1:
(len-1)
g(i,1) =
-1;
end
g (len,1) =
len;
disp
('AUTOCORRELATION
PROPERTY');
disp
(z);
t=1:1:(len);
plot(t,z);
if(z ==
g);
fprintf (
'Auto
correlation property is satisfied\n\n');
check =
3;
else
fprintf (
'Auto
correlation property is satisfied\n\n');
check =
2;
end
end
% run
property
while( check ==
3);
runs =
((len+1)/2);
u =
ff;
r = zeros
(1,u);
count =
1;
for i =
1:len-1
if (h(1,i) ==
h(1,i+1))
count =
count+1;
else
r(1,count) =
r(1,count)+1;
count =
1;
end
end
r(1,count) =
r(1,count)+1;
s =
zeros(1,u);
for i =
1:(u-1)
s(1,i) = runs
/ (2.^i) ;
end
s(1,u) =
1;
disp
('RUN
PROPERTY');
fprintf
('Runs\t\t\t
Run Length \n');
for i =
1:u
fprintf
('%d\t\t\t\t
%d\n',r(1,i),i);
end
if (r ==
s)
fprintf
('Run
Property is satisfied\n\n');
check =
4;
else
fprintf
('Run
Property is not satisfied\n\n');
check =
2;
end
end
if (check ==
2)
disp
('The given
sequence is not a PN sequence');
else
disp
('The given
sequence is a PN sequence');
end
No comments:
Post a Comment