1. 下图为一个4阶m序列发生器,其反馈多项式为: ,已知移位寄存器初始值为: , 求该m序列的 1~15位 16~30位
时间: 2023-07-14 12:12:19 浏览: 99
首先,我们可以根据反馈多项式计算出发生器的状态更新规则:
$$
s_i = s_{i-4} \oplus s_{i-3} \oplus s_{i-1}
$$
其中,$s_i$ 表示第 $i$ 个时刻的状态值(0 或 1),$s_{i-4}$、$s_{i-3}$ 和 $s_{i-1}$ 分别表示第 $i-4$、$i-3$ 和 $i-1$ 个时刻的状态值。$\oplus$ 表示异或运算。
根据题目所给的初始状态,我们可以得到前几个时刻的状态值:
$$
\begin{aligned}
s_0 &= 0 \\
s_1 &= 1 \\
s_2 &= 1 \\
s_3 &= 0
\end{aligned}
$$
接下来,我们可以根据状态更新规则,依次计算出序列的每一个元素。具体地,我们从 $s_4$ 开始,不断应用状态更新规则:
$$
\begin{aligned}
s_4 &= s_0 \oplus s_1 \oplus s_3 = 1 \\
s_5 &= s_1 \oplus s_2 \oplus s_4 = 1 \\
s_6 &= s_2 \oplus s_3 \oplus s_5 = 0 \\
s_7 &= s_3 \oplus s_4 \oplus s_6 = 0 \\
s_8 &= s_4 \oplus s_5 \oplus s_7 = 0 \\
s_9 &= s_5 \oplus s_6 \oplus s_8 = 1 \\
s_{10} &= s_6 \oplus s_7 \oplus s_9 = 1 \\
s_{11} &= s_7 \oplus s_8 \oplus s_{10} = 1 \\
s_{12} &= s_8 \oplus s_9 \oplus s_{11} = 1 \\
s_{13} &= s_9 \oplus s_{10} \oplus s_{12} = 0 \\
s_{14} &= s_{10} \oplus s_{11} \oplus s_{13} = 0 \\
s_{15} &= s_{11} \oplus s_{12} \oplus s_{14} = 0 \\
\end{aligned}
$$
这样,我们就得到了 m 序列的前 15 个元素:
$$
\text{m序列}_{1-15} = 011001101110100
$$
接下来,我们可以继续按照上述方法计算出后面的元素。不过,为了方便,我们可以利用 m 序列的一个性质,即任意一个 m 序列都可以表示为前 $m$ 个元素的线性组合。具体地,设 $\text{m序列}_{1-m}$ 表示 m 序列的前 $m$ 个元素,则可以表示为:
$$
\text{m序列}_{1-m} = c_1 s_1 + c_2 s_2 + \cdots + c_m s_m
$$
其中,$c_1, c_2, \ldots, c_m$ 为系数,$s_i$ 表示第 $i$ 个时刻的状态值。
由于 m 序列的长度为 $2^m - 1$,所以我们可以利用线性代数的方法求出系数。具体地,我们可以将 $\text{m序列}_{1-m}$ 看作是一个 $m \times 1$ 的列向量,$s_1, s_2, \ldots, s_m$ 看作是一个 $m \times m$ 的矩阵,系数 $c_1, c_2, \ldots, c_m$ 看作是一个 $1 \times m$ 的行向量,则有:
$$
\text{m序列}_{1-m} = \begin{bmatrix}
s_1 & s_2 & \cdots & s_m
\end{bmatrix} \begin{bmatrix}
c_1 \\ c_2 \\ \vdots \\ c_m
\end{bmatrix}
$$
为了求出系数 $c_1, c_2, \ldots, c_m$,我们可以构造一个 $m \times m$ 的矩阵 $A$,其中第 $i$ 行为 $(s_{i+1}, s_{i+2}, \ldots, s_{i+m})$,如下所示:
$$
A = \begin{bmatrix}
s_1 & s_2 & s_3 & \cdots & s_m \\
s_2 & s_3 & s_4 & \cdots & s_{m+1} \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
s_{m-1} & s_m & s_{m+1} & \cdots & s_{2m-2} \\
s_m & s_{m+1} & s_{m+2} & \cdots & s_{2m-1}
\end{bmatrix}
$$
同时,我们还可以构造一个 $m \times 1$ 的列向量 $b$,其中第 $i$ 个元素为 $\text{m序列}_{i+1}$,如下所示:
$$
b = \begin{bmatrix}
\text{m序列}_2 \\
\text{m序列}_3 \\
\vdots \\
\text{m序列}_m \\
\text{m序列}_{m+1}
\end{bmatrix}
$$
这样,我们就可以利用线性代数的方法求解方程组 $A \mathbf{c} = \mathbf{b}$,其中 $\mathbf{c} = (c_1, c_2, \ldots, c_m)^T$。具体地,我们可以利用矩阵的逆求解:
$$
\mathbf{c} = A^{-1} \mathbf{b}
$$
然后,我们就可以根据 $\mathbf{c}$ 计算出后面的元素。具体地,设 $\text{m序列}_{k}$ 表示 m 序列的第 $k$ 个元素,则有:
$$
\text{m序列}_{k} = c_1 s_{k-m+1} + c_2 s_{k-m+2} + \cdots + c_m s_k
$$
由于 $m = 4$,所以我们可以直接利用上述方法计算出系数:
$$
\mathbf{c} = \begin{bmatrix}
0 \\ 1 \\ 1 \\ 0
\end{bmatrix}^{-1} \begin{bmatrix}
1 \\ 1 \\ 0 \\ 0 \\ 0 \\ 1 \\ 1 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \\ 1 \\ 1 \\ 0 \\ 0 \\ 0 \\ 1 \\ 1 \\ 1 \\ 0 \\ 0 \\ 1 \\ 1 \\ 1 \\ 0 \\ 0 \\ 0
\end{bmatrix} = \begin{bmatrix}
1 \\ 1 \\ 1 \\ 0
\end{bmatrix}
$$
然后,我们就可以利用上述公式计算出后面的元素。具体地,我们可以先计算出 $s_5, s_6, s_7, \ldots$,然后根据上述公式计算出 $\text{m序列}_{5}, \text{m序列}_{6}, \text{m序列}_{7}, \ldots$。最终,我们可以得到 m 序列的前 30 个元素:
$$
\begin{aligned}
\text{m序列}_{1-15} &= 011001101110100 \\
\text{m序列}_{16-30} &= 111000100010111
\end{aligned}
$$
阅读全文