实验1---白噪声和M序列的产生

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验1 白噪声和M序列的产生

实验报告

1.实验题目:白噪声和M序列的产生

器顺序连接而成的4级移位寄存器,它带有一个反馈通道。当移位脉冲来到时,每级触发器的状态移到下一级触发器中,而反馈通道按模2加法规则反馈到第一级的输入端。

4.实验对象或参数

1、生成均匀分布随机序列

(1)利用混合同余法生成[0, 1]区间上符合均匀分布的随机序列,并计算该序列的均值和方差,与理论值进行对比分析。要求序列长度为1200,推荐参数为a=65539,M=2147483647,0

(2)将[0, 1]区间分为不重叠的等长的10个子区间,绘制该随机序列落在每个子区间的频率曲线图,辅助验证该序列的均匀性。

(3)对上述随机序列进行独立性检验。(该部分为选作内容)

2、生成高斯白噪声

利用上一步产生的均匀分布随机序列,令n=12,生成服从N(0,1)的白噪声,序列长度为100,并绘制曲线。

3、生成M 序列

M 序列的循环周期取为63126

=-=P N ,时钟节拍Sec 1=∆t ,幅度1=a ,逻辑“0”为a ,逻辑“1”为-a ,特征多项式65

()F s s s =⊕。

生成M 序列的结构图如下所示。

要求编写Matlab 程序生成该M 序列,绘制该信号曲线,并分析验证M 序列的性质。 5.程序框图

C 1

C 2

C 3

C 4

C 5

C 6

CP

M (6)

M (5)

+

M (4)

M (3)

M (2)

M (1)

M (0)

实验1-1

实验1-2 实验1-3

6.程序代码

%实验1-1

Xulie_Length = 1200;

A = 65539;

M = 2147483647;

b = 0;

R(Xulie_Length) = 0;

X(1) = 199119;

R(1) = X(1) / M;

for n = 1 : (Xulie_Length - 1)

7.实验结果及分析

1、生成均匀分布随机序列 (1)生成的0-1均布随机序列如下所示:

200

400

600

800

1000

1200

0.10.20.30.40.50.60.70.80.91

计算序列的均值和方差

程序代码:

mean_R = mean(R)

var_R = var(R)

均值和方差实际值:

mean_R =

0.4969

var_R =

0.0837

随机变量X服从均匀分布U(a,b),则均值为(a+b)/2,方差为(b-a)先平方再除以12。[0,1]区间均值和方差理论值:

mean_R =(0+1)/2=0.5;

var_R =1/12 = 0.083333。

结论:容易看到,实际值与理论值较接近。

(2)该随机序列落在10个子区间的频率曲线图如下:

结论:从结果图可以容易看到,该序列的均匀性较好。

2、生成高斯白噪声

生成的白噪声如下图:

-2.5

-2-1.5-1-0.500.511.52

生成的白噪声的频率统计图如下:

05

10

15

20

25

结论:从结果图知,生成的白噪声基本服从N(0,1)分布。

3、生成M 序列

生成的M 序列如下(n = 63):

010203040506070

-1.5-1

-0.5

0.5

1

1.5

验证M 序列性质:

均衡特性:m 序列每一周期中 1 的个数比 0 的个数多 1 个(-a 和a 的个数差1) 测试程序:

number_a = sum(M_XuLie == a);

number_a_c = sum(M_XuLie == -a);

number_a

number_a_c 结果:

number_a =

31

number_a_c =

32

结论:从测试结果看性质成立

游程特性:m 序列的一个周期(p =2n -1)中,游程总数为2n -1。其中长度为k 的游程个数占游程总数的 1/2k =2-k ,而且,在长度为k 游程中,连 1游程与连 0 游程各占一半,其中 1≤k≤(n -2)。长为(n -1)的游程是连 0 游程, 长为 n 的游程是连 1 游程。 测试程序:

M_XuLie_Ext = [M_XuLie, -M_XuLie(end)];

run = int8(0);

test_number_a(6) = int8(0);

test_number_a_c(6) = int8(0);

for n = 1 : length(M_XuLie)

run = run + 1;

if(M_XuLie_Ext(n) ~= M_XuLie_Ext(n + 1))

if(M_XuLie_Ext(n) == a)

test_number_a(run) = test_number_a(run) + 1;

else

相关文档
最新文档