m序列生成器

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序列的函数。下面是代码的逐行解释:

  1. function [m] = mserial_generator(tap_set)

    • 这是函数声明,定义了一个名为 mserial_generator 的函数,它接受一个参数 tap_set,并返回一个值 m
  2. % m序列产生器

    • 这是一个注释,说明这个函数是用来生成m序列的。
  3. % 输出为m序列,未进行极性变换。

    • 这是一个注释,说明函数的输出是未进行极性变换的m序列。
  4. L = 2^(length(tap_set)-1)-1;

    • 这行代码计算了m序列的长度,length(tap_set) 返回 tap_set 中元素的个数,这个值减去1是用来表示状态寄存器的位数,然后计算出m序列的长度。
  5. x = [zeros(1,(length(tap_set)-2)) 1];

    • 这行代码初始化了状态寄存器,生成一个初始值为0的数组,其长度为 length(tap_set) - 1,然后在末尾添加了一个1,表示状态寄存器的初始状态。
  6. for i = 1:1:L

    • 这是一个循环语句,循环从1到 L,其中 L 是m序列的长度。
  7. m(i)=x(end);

    • 这行代码将当前状态寄存器的最后一个元素添加到m序列中。
  8. for j= 1:1:length(tap_set)-1

    • 这是一个内部循环,用来计算状态寄存器中每个位的下一个值。
  9. sum_vector(j)=tap_set(j+1)*x(j);

    • 这行代码计算了当前状态寄存器位 j 下一个状态的贡献,使用了 tap_set 中的元素与状态寄存器中相应位的值相乘。
  10. sum_x = mod(sum(sum_vector),2);

    • 这行代码计算了状态寄存器下一个状态的值,将所有贡献值相加后取模2,以确保结果为0或1。
  11. x=[sum_x x(1:end-1)];

    • 这行代码更新了状态寄存器的值,将新计算得到的状态添加到状态寄存器的最前面,然后移除原来状态寄存器的最后一个元素,以便在下一次迭代中更新。

整体上,这段代码通过迭代更新状态寄存器的值,并根据特定的规则计算每个状态寄存器位的下一个状态,从而生成m序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值