?? m_sequence_generator.m
字號:
%<matlab> 使用移位寄存器生成m序列
%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% 該函數根據輸入的擴頻因子生成相應的M序列, %
% 其中擴頻因子限制在2的3次冪到2的12次冪之間。 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%
function Sequence = m_sequence_generator(SF)
SFlog2 = log2(SF);
if rem(SFlog2,1) ~= 0 % rem函數進行mod運算,此處檢驗SFlog2是否為整數
error('擴頻序列SF必須是2的整數次冪!'); % 即檢驗擴頻因子是否為2的整數次冪
end
%%
switch SFlog2
case 3
R = 3; instate = zeros(1,3); instate(R) = 1;
%instate為寄存器狀態,由于寄存器不能存在全0狀態,故設置相應的位為1
N = 2^R - 1; generator = [1 1 3];
%N為寄存器級數,generator為本原多項式,對應有連接器的位置
case 4
R = 4; instate = zeros(1,4); instate(R) = 1;
N = 2^R - 1; generator = [1 1 4];
case 5
R = 5; instate = zeros(1,5); instate(R) = 1;
N = 2^R - 1; generator = [1 2 5];
case 6
R = 6; instate = zeros(1,6); instate(R) = 1;
N = 2^R - 1; generator = [1 1 6];
case 7
R = 7; instate = zeros(1,7); instate(R) = 1;
N = 2^R - 1; generator = [1 3 7];
case 8
R = 8; instate = zeros(1,8); instate(R) = 1;
N = 2^R - 1; generator = [1 2 3 4 8];
case 9
R = 9; instate = zeros(1,9); instate(R) = 1;
N = 2^R - 1; generator = [1 4 9];
case 10
R = 10; instate = zeros(1,10); instate(R) = 1;
N = 2^R - 1; generator = [1 3 10];
case 11
R = 11; instate = zeros(1,11); instate(R) = 1;
N = 2^R - 1; generator = [1 2 11];
case 12
R = 12; instate = zeros(1,12); instate(R) = 1;
N = 2^R - 1; generator = [1 1 4 6 12];
otherwise
error('SF必須是2的整數次冪, 大于等于2^8并且小于等于2^12.')
end
%%
[Sequence] = ... % 調用線性反饋移位寄存器產生擴頻m序列
linear_feedback_shift_register(R,N,instate,generator);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -