function [m] = mserial_generator(tap_set)
% m序列产生器
% 输出为m序列,未进行极性变换。
L = 2^(length(tap_set)-1)-1;
x = [zeros(1,(length(tap_set)-2)) 1];
for i = 1:1:L
m(i)=x(end);
for j= 1:1:length(tap_set)-1
sum_vector(j)=tap_set(j+1)*x(j);
end
sum_x = mod(sum(sum_vector),2);
x=[sum_x x(1:end-1)];
end
这段代码是一个用于生成m序列的函数。下面是代码的逐行解释:
function [m] = mserial_generator(tap_set)
mserial_generator 的函数,它接受一个参数 tap_set,并返回一个值 m。% m序列产生器
% 输出为m序列,未进行极性变换。
L = 2^(length(tap_set)-1)-1;
length(tap_set) 返回 tap_set 中元素的个数,这个值减去1是用来表示状态寄存器的位数,然后计算出m序列的长度。x = [zeros(1,(length(tap_set)-2)) 1];
length(tap_set) - 1,然后在末尾添加了一个1,表示状态寄存器的初始状态。for i = 1:1:L
L,其中 L 是m序列的长度。m(i)=x(end);
for j= 1:1:length(tap_set)-1
sum_vector(j)=tap_set(j+1)*x(j);
j 下一个状态的贡献,使用了 tap_set 中的元素与状态寄存器中相应位的值相乘。sum_x = mod(sum(sum_vector),2);
x=[sum_x x(1:end-1)];
整体上,这段代码通过迭代更新状态寄存器的值,并根据特定的规则计算每个状态寄存器位的下一个状态,从而生成m序列。