1
숫자의 의사 랜덤 시퀀스를 생성하기 위해 Matlab에서 선형 피드백 시프트 레지스터를 구현하려고합니다.선형 피드백 시프트 레지스터 알고리즘
: 나는 1 16,384 (2^14) 임의의 순서로, 내 초기 상태는 숫자 329과 탭은 7이것은 내가 지금까지 가지고 코드입니다에서 시퀀스를 생성 할 필요가 가정
function [rndV] = lfsr(limit, init, tap)
X = -1;
rndV = init;
bits = nextpow2(limit);
while(X ~= init)
if(X == -1)
X = init;
end
a = bitget(X, bits);
b = bitget(X, tap);
X = bitshift(X,1,bits);
X = bitset(X,1,bitxor(a,b));
rndV = [rndV X];
end
end
매개 변수는 다음과 같습니다
limit = 16,384 init = 329 tap = 7
내가 알고리즘 루프 초기 상태를 다시 발견해야한다 때까지 오른쪽 LFSR을 얻는 경우에? 이 루프는 1에서 16,384 사이의 모든 숫자를 임의의 순서로 생성해야합니까?
내 코드가 잘못되었거나 LFSR 알고리즘을 잘못 이해했지만 임의의 순서로 22 개의 숫자 만 얻으면 초기 상태 (329)가 다시 발견됩니다.
here에 설명되어 있지만 matlab.Thanks에서와 동일하게하고 싶습니다!