how to make a PN code?

조회 수: 4 (최근 30일)
DaWoon Jeong
DaWoon Jeong 2017년 6월 11일
답변: Dimitris Iliou 2017년 6월 16일
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);

답변 (1개)

Dimitris Iliou
Dimitris Iliou 2017년 6월 16일
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.

카테고리

Help CenterFile Exchange에서 언어 기본 사항에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!