how to make a PN code?

7 views (last 30 days)
DaWoon Jeong
DaWoon Jeong on 11 Jun 2017
Answered: Dimitris Iliou on 16 Jun 2017
I make a PN code for home work. but it's not work but i don't know the reason why. what's the problem n how to build PN code in base on my code. It's my code i know the answer, num_right has to be 60.
var= dec2bin(0:2^9-1)-'0';
var = [ones(512,1),var,ones(512,1)];
num_right = 0;
for k=1 : 512
if(mod(sum(var(k,:)),2)==1)
org(1,:)= var(k,:);
for l=1 :1022
check(k,l) = org(l,3);
next_high = rem(sum(org(l,2:11)),2);
org(l+1,:) = circshift(org(l,:),1);
org(l+1,1) = next_high;
end
check(k,1023) = org(1023,3);
if(isequal(org(1023,:),var(k,:))==1)
for m=1:1023
if(check(k,m)==1)
check(k,m) = -1;
end
if(check(k,m) ==0)
check(k,m) = 1;
end
end
for n=1:1023
check_change = circshift(check(k,:),n);
check_sum(k,n) = sum(check(k,:).*check_change);
end
if (check_sum(k,1023) ==1023)
sum_check = check_sum(k,1:1022).*check_sum(k,1:1022);
if(sum(check_sum(k,1:1022).*check_sum(k,1:1022))==1022)
fprintf('%g \n',var(k,:));
num_right = num_right + 1;
end
if(sum(check_sum(k,1:1022).*check_sum(k,1:1022))~=1022)
continue, end
if (check_sum(k,1023) ~=1023)
continue, end
end
end
end
end
fprintf('%g \n', num_right);

Answers (1)

Dimitris Iliou
Dimitris Iliou on 16 Jun 2017
The problem with your code is that the
if(sum(check_sum(k,1:1022).*check_sum(k,1:1022))==1022)
is never true. Due to that, your num_right variable is never modified.
If you debug the code, you will find that the first time you hit that if statement you have the following:
sum(check_sum(k,1:1022).*check_sum(k,1:1022)
ans =
103968206
and
size(check_sum(k,1:1022).*check_sum(k,1:1022))
ans =
1 1022
Having said that, I think you might be checking for the wrong thing.
What I would suggest is try debugging your code in order to understand how it works and what you can do to change it.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!