m序列

m序列式最长线性反馈位移寄存器序列的简称

先不去逐字解释最长线性反馈的意思,我们从m序列的产生入手

 

图上显示出一个4级线性反馈移存器。设其初始状态为(a3,a2,a1,a0)=(1,0,0,0),

则进行位移一次瞬间(向右边位移),位移后下一个a3的值为(a3+a0)%2=1,a2的下一个值为a3的值,

a1的下一个值则为a2的值,a0的下一个值为a1的值。这样一次运算后,4个寄存器中存储为1100

图下数据为该m序列一次循环的所有寄存器值

因为4级寄存器因此共有2^4=16种可能的状态,除去全0外只剩下15种(m序列个数)

因此周期为2^4-1

 

m序列的输出是上图中拥有15项的4列数。如上面的那个圈就是其中一个

 

我们将m序列的结构用特征方程表出

 

 

 

可以看出n=4的时候,从左往右数第一个第二个和第四个为路径节点

由于最后一路必然是路径节点因此多项式最高次数就是m序列级数

 

m序列的性质:

 

1.均衡性,1和0的数目基本相等(准确说,1的个数比0多一个)

2 游程分布特性

长度为n的游程表示0(或者1)连续出现n次的子序列

m序列中长度为1的游程占总长度的1/2,长度为2的游程占1/4,长度为3占1/8,长度为k占2^(-k)

3 移位相加性

一个m序列与其经过任意次延迟移位产生的另一个不同的序列模2相加得到的仍然是m序列的某次延迟移位序列

4 自相关函数特性

m序列的自相关函数只有两种取值0和1/m

5 功率谱特性

m序列的功率谱特性趋于白噪声的功率谱特性

6 伪噪声特性

由于m序列的均衡性游程分布和自相关特性与上述随机序列的基本性质相似,所以通常将m序列称为伪噪声序列或伪随机序列(PN序列)

(PN序列还有M序列,二次剩余序列,霍尔序列,双素数序列)

 

 

 

 

  • 21
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: M序列是一种特殊的伪随机序列,具有良好的相关性和低自相关性。在MATLAB中,可以用编程来实现M序列。 首先,我们可以使用MATLAB内置的rand函数生成二进制伪随机序列。然后,将该序列进行移位操作,来生成不同长度的M序列。 下面是一个简单的MATLAB代码示例,演示了如何生成M序列: ```matlab % 设置M序列长度 N = 31; % 生成随机序列 random_seq = randi([0 1], 1, N); % 生成M序列 m_seq = zeros(1, N); m_seq(N) = random_seq(1); for i = 1:N-1 m_seq(i) = xor(random_seq(i), random_seq(N)); end % 打印M序列 disp(m_seq); ``` 这段代码中,首先我们设置了M序列的长度为31(可以根据需要调整)。然后,使用randi函数生成了一个长度为N的随机序列random_seq。接下来,我们使用循环遍历random_seq,通过异或运算来生成M序列m_seq。最后,我们使用disp函数打印出生成的M序列。 请注意,这只是一个简单的M序列生成器的示例代码,可能不是最优的方法。在实际应用中,还需要考虑到M序列的性能要求和算法的优化。 以上是关于M序列MATLAB编程的简要回答,希望对你有帮助! ### 回答2: M序列是一种伪随机序列,也被称为最长线性反馈移位寄存器序列。在Matlab中,我们可以使用多种方法来实现M序列的编程。 一种简单的实现方法是使用移位寄存器和反馈多项式来生成M序列。首先,我们需要选择一个合适的反馈多项式。该多项式决定了数列的长度和周期等特性。然后,我们创建一个移位寄存器,其长度与反馈多项式的最高次数相同。初始化移位寄存器的状态为全零或全一,然后使用反馈多项式依次生成序列的每个元素。具体步骤如下: 1. 定义反馈多项式。例如,反馈多项式为x^10 + x^3 + 1,则可以表示为[1 0 0 0 0 0 0 0 1 0 1]。 2. 初始化移位寄存器的状态。例如,假设移位寄存器的长度为10,则初始化为全零或全一的行向量。 3. 遍历生成序列中的每个元素。根据反馈多项式和移位寄存器的当前状态计算下一个元素。具体方法是将反馈多项式的系数与移位寄存器的对应位相乘,然后将结果求和并取模2得到下一个元素。 4. 更新移位寄存器的状态。将当前生成的元素插入到移位寄存器的最高位,然后将其余位向右移动一位。 5. 重复步骤3和4,直到生成所需长度的M序列。 除了使用移位寄存器和反馈多项式的方法外,还可以使用Matlab中提供的现成函数实现M序列的生成,例如randseq函数、pnsequence函数等。这些函数具有更高的效率和更简洁的代码,适用于较复杂的M序列生成需求。 总的来说,M序列的编程在Matlab中可以通过手动实现移位寄存器和反馈多项式的方式,或者利用现成的函数来实现。 ### 回答3: M序列是一种特殊的伪随机序列,可以用于通信系统中的扩频技术和数据加密等领域。在Matlab中,可以通过编程来生成M序列。 生成M序列的方法有很多种,其中一种常用的方法是使用反馈移位寄存器。首先,需要确定M序列的阶数,即序列的长度。根据生成多项式,选择适当的反馈系数。然后,初始化寄存器的初值,通常为全为1或全为0的状态。接下来,循环进行以下步骤:将寄存器内的值进行位移,并根据生成多项式进行异或运算,得到新的序列元素。将新的序列元素保存下来,作为M序列的一部分。重复该步骤,直到生成指定长度的序列。 在Matlab中,可以通过编写函数来实现M序列的生成。首先定义生成多项式和初始状态,然后使用for循环进行位移和异或运算,最后将每一次得到的序列元素保存起来。可以使用一个数组来存储生成的序列。 以下是一个简单的示例代码,用于生成M序列: ``` function m_sequence = generate_m_sequence(order, polynomial, initial_state) m_sequence = zeros(1, 2^order-1); % 初始化M序列数组 register = initial_state; % 初始化寄存器状态 for i = 1:2^order-1 m_sequence(i) = register(end); % 保存生成的序列元素 feedback = mod(sum(register(polynomial)), 2); % 计算反馈 register = circshift(register, -1); % 位移寄存器 register(1) = feedback; % 更新寄存器 end end ``` 通过调用该函数,可以得到一个长度为2^order-1的M序列。其中,order为M序列的阶数,polynomial为生成多项式,initial_state为寄存器的初始状态。 总之,通过在Matlab中编程,可以方便地生成M序列,用于扩频通信和数据加密等应用。以上是一个简单的示例代码,可以根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值