实验1---白噪声和M序列的产生
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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