📄 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 + -