资源描述
电子1401 * *大连理工大学实验预习报告学院(系): 信息与通信工程学院 专业: 电 子 信 息 工 程 班级: 1401 姓 名: * 学号: * 组: _ 实验时间: 2016/10/31 实验室: C227 实验台: 指导教师: 李 小 兵 实验I:随机信号的产生、相关分析及其应用实验一、 实验目的和要求通过实验理解掌握随机信号样本生成的原理和方法、掌握随机过程相关函数的计算原理和方法。训练MATLAB程序代码编写能力,要求完成以下工作,并将实验结果与理论分析对照。1.基于均匀分布伪随机数,掌握均匀分布白噪声典型生成方法。2.基于均匀分布伪随机数,掌握高斯分布白噪声典型生成方法。3.掌握随机信号相关函数计算、相关分析及实现方法。二、 实验原理和内容1 实验原理较简单的伪随机序列产生方法是采用数论中基于数环理论的线性同余法(乘同余法、混合同余法),其迭代公式的一般形式为f(x) = (r*x + b) Mod M,其离散形式为s(n + 1) = r*s(n)+ b Mod M。其中,s(n)为n 时刻的随机数种子,r 为扩展因子,b 为固定扰动项,M 为循环模,Mod M 表示对M 取模。为保证s(n)的周期为M,r 的取值应满足r = 4k + 1, p M 2 = ,k与p 的选取应满足:r M,r(M-1) + 1 231-1。通常公式中参数常用取值为s(0) =12357,r = 2045,b = 1,M =1048576。较简单的高斯白噪声产生方法是基于概率论中的中心极限定理。即无穷多个同分布随机变量之和构成随机变量服从高斯分布。方便起见,可用 N 个(通常 N=12)均匀分布随机变量之和 Xi近似高斯分布随机变量。若 Xi,i = 0, 1, , 11 在0, 1)上服从均匀分布,则 Y= i=011Xi-6近似服从均值为 0,方差为 1 的高斯分布。随机信号相关函数计算、相关分析及实现方法原理:离散随机序列自相关函数定义为 Rx(m)=Ex(n)x(n+m)。对于各态历经随机过程,统计平均可用时间平均代替,即Rx(m)=limn12N+1n=-NNxnx(n+m)工程实践中,无法获得无限长数据,只能用有限平均来近似,即 Rx(m)=1N-mn=0N-1xnx(n+m),m=0, 1, , K-1;KN。为保证估计质量,通常要求 KN。此时 Rx(m)也可以简化为1Nn=0N-1xnx(n+m)。同理,也类似地计算互相关函数。2实验内容(1) 编程实现产生10000个在(0, 1)区间均匀分布随机数。计算生成随机数的14阶矩,最大值,最小值,频度直方图。(2) 编程实现产生10000个N(3, 4) 高斯随机数。计算生成随机数的14阶矩,最大值,最小值,频度直方图。(3) 编程实现产生10000个N(1, 2) 高斯随机数和10000个N(3, 4) 高斯随机数。计算其自相关函数, 计算两个高斯随机信号的互相关函数。(4) 生成一个10000点高斯随机信号x(n):N(1, 4)。将该信号延迟N点,N 200,得到随机信号y(n)。计算两个信号的互相关函数,搜索峰值位置估算延迟。3实验仪器设备微型计算机、Matlab开发环境(本报告采用MATLAB2016a)三、 实验步骤(1) 实现产生10000个在(0, 1)区间均匀分布随机数。(2) 计算生成随机数的14阶矩,最大值,最小值,频度直方图。(3) 编程实现产生10000个N(3, 4)高斯随机数。(4) 计算生成随机数的14阶矩,最大值,最小值,频度直方(5) 编程实现产生10000个N(1, 2)高斯随机数和10000个N(3, 4)高斯随机数。(6) 计算其自相关函数,计算两个高斯随机信号的互相关函数。(7) 生成一个10000点高斯随机信号x(n):N(1,4)。(8) 将该信号延迟N点,N200,得到随机信号y(n)。、(9) 计算两个信号的互相关函数,搜索峰值位置估算延迟。四、 实验数据记录表格表1-1 实验内容(1)数据处理记录表均值均方值三阶原点矩四阶原点矩最小值最大值表1-2 实验内容(2)数据处理记录表均值均方值三阶原点矩四阶原点矩最小值最大值表1-3 实验内容(4)数据处理记录表峰值位置延迟估算大连理工大学实验报告学院(系): 信息与通信工程学院 专业: 电 子 信 息 工 程 班级: 1401 姓 名: * 学号: * 组: _ 实验时间: 2016/10/31 实验室: C227 实验台: 指导教师: 实验I:随机信号的产生、相关分析及其应用实验一、 实验目的和要求通过实验理解掌握随机信号样本生成的原理和方法、掌握随机过程相关函数的计算原理和方法。训练MATLAB程序代码编写能力,要求完成以下工作,并将实验结果与理论分析对照。1.基于均匀分布伪随机数,掌握均匀分布白噪声典型生成方法。2.基于均匀分布伪随机数,掌握高斯分布白噪声典型生成方法。3.掌握随机信号相关函数计算、相关分析及实现方法。二、 实验原理和内容1 实验原理较简单的伪随机序列产生方法是采用数论中基于数环理论的线性同余法(乘同余法、混合同余法),其迭代公式的一般形式为f(x) = (r*x + b) Mod M,其离散形式为s(n + 1) = r*s(n)+ b Mod M。其中,s(n)为n 时刻的随机数种子,r 为扩展因子,b 为固定扰动项,M 为循环模,Mod M 表示对M 取模。为保证s(n)的周期为M,r 的取值应满足r = 4k + 1, p M 2 = ,k与p 的选取应满足:r M,r(M-1) + 1 231-1。通常公式中参数常用取值为s(0) =12357,r = 2045,b = 1,M =1048576。2实验内容 (1) 编程实现产生10000个在(0, 1)区间均匀分布随机数。计算生成随机数的14阶矩,最大值,最小值,频度直方图。(2) 编程实现产生10000个N(3, 4) 高斯随机数。计算生成随机数的14阶矩,最大值,最小值,频度直方图。(3) 编程实现产生10000个N(1, 2) 高斯随机数和10000个N(3, 4) 高斯随机数。计算其自相关函数, 计算两个高斯随机信号的互相关函数。(4) 生成一个10000点高斯随机信号x(n):N(1, 4)。将该信号延迟N点,N 200,得到随机信号y(n)。计算两个信号的互相关函数,搜索峰值位置估算延迟。三、 主要仪器设备微型计算机、Matlab开发环境(本报告采用MATLAB2016a)(注:以下为代码内容已经有详细的说明已包括步骤和操作办法)212016-11-04四、实验步骤与操作方法实验内容(1):编程实现产生10000个在(0, 1)区间均匀分布随机数。计算生成随机数的14阶矩,最大值,最小值,频度直方图代码如下:%清除以前数据缓存以及命令行窗口的显示clearclc% 均匀分布随机数的产生% 生成 10000 数据s = randuniform(1048576,1,2045,12357,10000); % 画线figure,plot(s) %全部title(全部数据连线)figure,plot(s(1:100) %前100个数据title(前100个数据连线)% 画点figure,plot(s,.) %全部title(全部数据画点)figure,plot(s(1:100),*) %前100个数据title(前100个数据画点)% 画直方图hist(s)title(10个区间)hist(s,100)title(100个区间)% 估计随机数的分布f,xi=ksdensity(s);figure,plot(xi,f);title(利用MATLAB函数ksdensity估计得概率密度)% 随机数的均值、均方值、一维三阶原点矩、一维四阶原点矩m = zeros(1,4); %生成0 0 0 0for i = 1 : 10000 m(1) = m(1) + s(i); % 均值 m(2) = m(2) + s(i)2; % 二阶矩 m(3) = m(3) + s(i)3; %三阶 m(4) = m(4) + s(i)4; %四阶endm5=max(s);%最大值m6=min(s);%最小值m=m/10000;disp(均值 = ,num2str(m(1) );disp(均方值 = ,num2str(m(2) );disp(三阶原点矩 = ,num2str(m(3) );disp(四阶原点矩 = ,num2str(m(4) );disp(最大值 = ,num2str(m5) );disp(最小值 = ,num2str(m6) );% 对比:Matlab函数disp(=以下对比Matlab库函数生成的数据=)disp(=按任意键继续=)pause;% 生成 10000 数据sm = rand(1,10000); % 画线figure,plot(sm) %全部title(全部数据连线)figure,plot(sm(1:100) %前100个数据title(前100个数据连线)% 画点figure,plot(sm,.) %全部title(全部数据画点)figure,plot(sm(1:100),*) %前100个数据title(前100个数据画点)% 画直方图hist(sm)title(10个区间)hist(sm,100)title(100个区间)% 估计随机数的分布f,xi=ksdensity(sm);figure,plot(xi,f);title(利用MATLAB函数ksdensity估计得概率密度)% 求随机数的均值、均方值、一维三阶原点矩、一维四阶原点矩m = zeros(1,4); %生成0 0 0 0for i = 1 : 10000 m(1) = m(1) + sm(i); % 均值 m(2) = m(2) + sm(i)2; % 二阶矩 m(3) = m(3) + sm(i)3; %三阶 m(4) = m(4) + sm(i)4; %四阶endm5=max(sm); %最大值m6=min(sm); %最小值m=m/10000;disp(均值 = ,num2str(m(1) );disp(均方值 = ,num2str(m(2) );disp(三阶原点矩 = ,num2str(m(3) );disp(四阶原点矩 = ,num2str(m(4) );disp(最大值 = ,num2str(m5) );disp(最小值 = ,num2str(m6) );实验内容(2): 编程实现产生10000个N(3, 4) 高斯随机数。计算生成随机数的14阶矩,最大值,最小值,频度直方图。代码如下:%清除以前数据缓存以及命令行窗口的显示clearclc%高斯分布随机数的产生% 生成 10000 数据m=0;a=1;num=10000;s = rnd(m,a,num); %rnd()自己编写的产生高斯随机数的函数% 画线figure,plot(s) %全部title(全部数据连线)figure,plot(s(1:100) %前100个数据title(前100个数据连线)% 画点figure,plot(s,.) %全部title(全部数据画点)figure,plot(s(1:100),*) %前100个数据title(前100个数据画点)% 画直方图hist(s)title(10个区间)hist(s,100)title(100个区间)% 估计随机数的分布f,xi=ksdensity(s);figure,plot(xi,f);title(利用MATLAB函数ksdensity估计得概率密度)% 求随机数的均值、均方值、一维三阶原点矩、一维四阶原点矩、最大值和最小值m = zeros(1,4); %生成0 0 0 0for i = 1 : 10000 m(1) = m(1) + s(i); % 均值 m(2) = m(2) + s(i)2; % 二阶矩 m(3) = m(3) + s(i)3; %三阶 m(4) = m(4) + s(i)4; %四阶endm5=max(s);%最大值m6=min(s);%最小值m=m/10000;disp(均值 = ,num2str(m(1) );disp(均方值 = ,num2str(m(2) );disp(三阶原点矩 = ,num2str(m(3) );disp(四阶原点矩 = ,num2str(m(4) );disp(最大值 = ,num2str(m5) );disp(最小值 = ,num2str(m6) );% 对比:Matlab函数disp(=以下对比Matlab库函数生成的数据=)disp(=按任意键继续=)% pause;% 生成 10000 数据sm = random(normal,0,1,1,num); % 画线figure,plot(sm) %全部title(全部数据连线)figure,plot(sm(1:100) %前100个数据title(前100个数据连线)% 画点figure,plot(sm,.) %全部title(全部数据画点)figure,plot(sm(1:100),*) %前100个数据title(前100个数据画点)% 画直方图hist(sm)title(10个区间)hist(sm,100)title(100个区间)% 估计随机数的分布f,xi=ksdensity(sm);figure,plot(xi,f);title(利用MATLAB函数ksdensity估计得概率密度)% 求随机数的均值、均方值、一维三阶原点矩、一维四阶原点矩、最大值和最小值m = zeros(1,4); %生成0 0 0 0for i = 1 : 10000 m(1) = m(1) + sm(i); % 均值 m(2) = m(2) + sm(i)2; % 二阶矩 m(3) = m(3) + sm(i)3; %三阶 m(4) = m(4) + sm(i)4; %四阶endm5=max(sm);%最大值m6=min(sm);%最小值m=m/10000;disp(均值 = ,num2str(m(1) );disp(均方值 = ,num2str(m(2) );disp(三阶原点矩 = ,num2str(m(3) );disp(四阶原点矩 = ,num2str(m(4) );disp(最大值 = ,num2str(m5) );disp(最小值 = ,num2str(m6) );实验内容(3):(3) 编程实现产生10000个N(1, 2) 高斯随机数和10000个N(3, 4) 高斯随机数。计算其自相关函数, 计算两个高斯随机信号的互相关函数。代码如下:%清除以前数据缓存以及命令行窗口的显示clearclc%定义高斯随机的方差和均值及产生的数量m1=1;a1=2;m2=3;a2=4;num=10000;%利用自带函数产生高斯随机数d1=random(norm,1,2,1,num);d2=random(norm,3,4,1,num);%计算自相关和互相关函数Rx1=xcorr(d1);Rx2=xcorr(d1);Rx1x2=xcorr(d1,d2);m=-num+1:num-1;figure,plot(m,Rx1);figure,plot(m,Rx2);figure,plot(m,Rx1x2);实验内容(4):(4) 生成一个10000点高斯随机信号x(n):N(1, 4)。将该信号延迟N点,N 200,得到随机信号y(n)。计算两个信号的互相关函数,搜索峰值位置估算延迟。代码如下:%清除以前数据缓存以及命令行窗口的显示clearclc%定义高斯随机的方差和均值及产生的数量m1=1;a1=4;num=10000;fs=500;N=100;long=1000;%由于数据过多,延时图比较不明显,显示1000个数据%利用自带函数产生高斯随机数x1=random(norm,1,4,1,num);x2=random(norm,1,4,1,num);x=random(norm,1,4,1,N); %产生一个1维N个随机高斯随机数,用来替换延时后的空位%延时Nfor i=1:10000 if(imax11) max11=cor11(1,i); delay11=lag11(1,i); endendmax11delay11%延时Nfor i=1:10000 if (iN) x2(i)=x1(i-N); else x2(i)=x(i);%将延时后的前100用产生的高斯随机数代替 endendfigure,subplot(2,1,1),plot(x1(1:long);%延迟与原随机信号同一张图中比较title(原随机信号)subplot(2,1,2),plot(x2(1:long),r);%延迟与原随机信号同一张图中比较title(用高斯随机数替换后的延时信号)cor12, lag12=xcorr(x1,x2);figure,plot(lag12/fs,cor12)title(延时100且用高斯随机数替代延时后两个函数的互相关函数)%求最大值,和延时max12=0;for i=1:10000 if(cor12(1,i)max12) max12=cor12(1,i); delay12=lag12(1,i); endendmax12delay12附:本次作业中用到的两个随机信号源代码1. 产生(0, 1)区间均匀分布随机数的函数:function s = randuniform(M,b,r,first,num)%调用示例: s = randuniform(1048576,1,2045,12357,10000) % 其中,s(n)为n时刻的随机数种子,r为扩展因子,b为固定扰动项,M为循环模,Mod M表示对M取模。% 通常公式中参数常用取值为s(0) =12357,r = 2045,b = 1,M =1048576。s = zeros(1,num);s(1) = first;for i = 2 : num s(i) = mod(s(i-1)*r+b,M);ends = s/M;2. 高斯随机序列产生函数:function s1,s2 =rnd( m,a,num )%其中a是均值,m是方差 ,num变量则是数据量%调用示例: s = rnd(0,1,1000),x1=rand(1,num);x2=rand(1,num);y1=sqrt(-2*log(x1).*cos(2*pi*x2);y2=sqrt(-2*log(x1).*sin(2*pi*x2);s1=a*y1+m;s2=a*y2+m;end五、实验数据记录和处理实验内容(2)结果:图1-1.1:10000个均匀随机数的连线图(自编函数)图1-1.2:前100个均匀随机数连线图(自编函数)图1-1.3:10000个均匀随机数数据点图(自编函数)图1-1.4:10000个均匀随机变量频度直方图(自编函数)图1-1.5:估得的概率密度图(自编函数) 图1-1.6:10000个均匀随机数的连线图(库函数)图1-1.7:前100个均匀随机数的连线图(库函数)图1-1.9:10000个均匀随机变量频度直方图(库函数)图1-1.8:10000个均匀随机数的数据点图(自编函数)图1-1.10:估得的概率密度图(库函数)以下是得到的运算数据:表1-1.1 实验内容(1)自编函数数据处理记录表均值均方值三阶原点矩0.497240.330620.24762四阶原点矩最小值最大值0.197957.6294e-060.99986表1-1.2 实验内容(1)库函数数据处理记录表均值均方值三阶原点矩0.499560.332460.24874四阶原点矩最小值最大值0.198477.0261e-050.99979实验内容(2)结果:图1-2.1:10000个高斯随机数的连线图(自编函数)图1-2.2:前100个高斯随机数的连线图(自编函数)图1-2.3:10000个高斯随机数的数据点图(自编函数)图1-2.4:10000个高斯随机变量频度直方图(自编函数)图1-2.5:估得的高斯概率密度图(自编函数)图1-2.6:10000个高斯随机数的连线图(库函数)图1-2.7:前100个高斯随机数的连线图(库函数)图1-2.8:10000个高斯随机数的数据点图(库函数)图1-2.9:10000个高斯随机变量频度直方图(库函数)图1-2.10:估得的高斯概率密度图(库函数)以下是得到的运算数据:表1-2.1 实验内容(2)自编函数数据处理记录表均值均方值三阶原点矩-0.0106970.99069-0.011689四阶原点矩最小值最大值2.9351-3.77273.945表1-2.2 实验内容(2)库函数数据处理记录表均值均方值三阶原点矩-0.00218151.0159-0.022676四阶原点矩最小值最大值3.0189-3.8723.9845实验内容(3)结果:图1-3.1:高斯随机变量x1的自相关函数图1-3.2:高斯随机变量x1的自相关函数图1-3.3:高斯随机变量x1,x2的互相关函数实验内容(4)结果:图1-4.1:信号延迟用0替换比较图图1-4.2:信号延迟用0替换后与原信号互相关函数图1-4.3:信号延迟用高斯随机数替换比较图图1-4.2:信号延迟用高斯随机数替换后与原信号互相关函数表1-8 实验内容(4)用0替换数据处理记录表峰值位置延迟估算1.6934e+05-100表1-9 实验内容(4)用高斯随机数替换数据处理记录表峰值位置延迟估算1.6934e+05-100六、实验结果与分析实验内容(1):利用自编函数和MATLAB库内的函数分别产生了 (0, 1)区间均匀分布随机数,分别画出了频度直方图各自的连线图,数据点图,频度直方图,概率密度图,计算生成随机数的14阶矩,最大值,最小值等,结果见图表,由数据说明自编函数和库函数的均匀随机数的模拟是一致的。实验内容(2):利用自编函数和MATLAB库内的函数分别产生了N(3, 4) 高斯随机数。分别画出了频度直方图各自的连线图,数据点图,频度直方图,概率密度图,计算生成随机数的14阶矩,最大值,最小值等,结果见图表,由数据说明自编函数和库函数的高斯随机数的模拟是一致的。从输出的分布直方图可观测到与理论的高斯分布概率密度曲线相近,结果显示峰值基本在数学期望处,呈正态分布。实验内容(3):利用MATLAB自带库函数编程实现产生N(1, 2)高斯随机数和个N(3, 4) 高斯随机数。计算其自相关函数, 计算两个高斯随机信号的互相关函数。结果见图表,相关函数是描述随机变量的一项重要指标,描述随机变量的相关特性。从输出图像可以看到原点处的冲激,与理论所学相符合。实验内容(4):利用MATLAB自带函数库生成高斯随机信号x1:N(1, 4)。将该信号延迟l了100点得到随机信号x2。计算两个信号的互相关函数,如结果所示:苏霍明延迟后的高斯随机数还是自相关的,延迟也是100点。七、讨论、建议、质疑通过这次实验,基本掌握了均匀和高斯随机数的产生和数据特征分析,同时感受到了随机信号分析对实际工程的巨大作用,加深了对课程所学知识的理解,对今后的学习与工作都产生了积极的影响。同时对MATLAB代码的不熟悉和不能灵活运用是这次实验最大的阻碍,在理解书上原理的同时还要多动手实践仿真模拟。希望下次实验也会也有所得。
展开阅读全文