?? 實現線性反饋移位寄存器單元.txt
字號:
<matlab> 實現線性反饋移位寄存器單元<LFSR>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% 該函數實現產生偽隨機序列的部件 —— 線性反饋移位寄存器單元 %
% %
% SFlog2為擴頻因子的底數為2的對數值,cycle為PN序列的周期,其值為2^SFlog2 %
% initial_state為移位寄存器的初始狀態,generator_polynomial_coefficient為 %
% 生成PN序列所需的本原多項式,對應于移位寄存器的連接向量。 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [m_sequences] = linear_feedback_shift_register(SFlog2,cycle,...
initial_state,generator_polynomial_coefficient)
if max(generator_polynomial_coefficient) > SFlog2
error('本原多項式系數對應的最高階不能大于移位寄存器的階數');
end
if length(initial_state) > SFlog2
error('移位寄存器的初始狀態序列長度不能大于寄存器的階數');
end
if SFlog2 > 32
error('擴頻因子超出仿真器處理范圍!');
end
len = length(generator_polynomial_coefficient);
m_sequences = zeros(1,cycle); % 初始化反饋序列
register_index = generator_polynomial_coefficient;
%%
% 開始線性反饋移位寄存器的迭代計算過程
h = waitbar(0,'m 序列生成中...................');
for m = 1:cycle
temp = initial_state(register_index(2));
for n = 3:len
temp = bitxor(initial_state(register_index(n)),temp);
end
m_sequences(m) = initial_state(1); % 線性反饋移位寄存器的輸出
initial_state = [temp,initial_state]; % 更新線性反饋移位寄存器的狀態
initial_state(SFlog2+1) = [];
waitbar(m/cycle);
end
close(h);
%%
m_sequences = 2*m_sequences - 1; % 生成雙極性的隨機序列
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -