伪随机序列的c语言编程实现
A typical PRN Sequence
---m Sequence
云南民族大学
姓名:陈 楠
学号:12011113201
年级:11 级信号与信息处理专业
m 序列简介
由线性反馈移位寄存器产生的周期最长的二进制数字序列称为最大长度线性反馈移位
寄存器序列,通常称为 m 序列。序列长度(周期) T 与移位寄存器的级数 n 的关系是:T=2n- 1 (1)
移位寄存器的不同初始值决定了 m 序列有不同的 0、1 排列,但周期是相同的。如在图 1 中
n=4, 则 T=15 。 若 初 始 状 态 为 a3 =1, a2 =0, a1 =0, a0 =0, 则 序 列 的 1 个 周 期 为
000111101011001
m 序列的伪噪声特性具体表现为 :(1)序列中的 1 与 0 出现的数目最多差 1 个,概率几乎
相等 ;(2) 长度为 k 的游程约占 ,而且在长度为 k 的游程中 ,全为 1 与全为 0 的游程数相
同;(3) 当 T 很长,码元宽度很小时(高传输率的现代???信正是如此 ) ,序列的自相关函数 R(τ)近
似为冲激函数δ(t)的形状, 功率谱密度 G(ω)近似为白噪声的功率谱特性 。由于 m 序列的均衡
性、游程分布、自相关函数、功率谱密度与随机序列的基本性质很相似 ,所以通常认为 m 序
列属于伪噪声序列或伪随机序列。
#include“stdio. h”
#include“stdlib. h”
staticint R[4] ={1};
main()
{
int n=4
int f;
int k;
printf(“PNCode: \ N”) ;
printf(Input k:”) ;
scanf( %d”, &k) ;
n=k315;
while (n)
{
if ((( ! R[3] &&R[0])| | (R[3]
&&( ! R[0]))) f =1;
elsef =0;
R[0] =R[1];
R[1] =R[2];
R[2] =R[3];
R[3] =f;
Printf(“%3d”, R[0]) ;
n- - ;
}
printf(“\ n”) ;
}
分别输入 k=1 与 3,所得结果与希望的一样。运行情况如下 :
PNCode:
Input k: 1
000111101011001
PNCode:
Input k:3
000111101011001000111101011001000111101011001