实验一随机信号产生相关分析及其应用实验.docx
- 文档编号:7572899
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:16
- 大小:274.23KB
实验一随机信号产生相关分析及其应用实验.docx
《实验一随机信号产生相关分析及其应用实验.docx》由会员分享,可在线阅读,更多相关《实验一随机信号产生相关分析及其应用实验.docx(16页珍藏版)》请在冰豆网上搜索。
实验一随机信号产生相关分析及其应用实验
大连理工大学实验预习报告
学院(系):
信息与通信工程学院专业:
电子信息工程班级:
1401
姓名:
*****学号:
*****组:
___
实验时间:
2016/10/31实验室:
C227实验台:
指导教师:
李小兵
实验I:
随机信号的产生、相关分析及其应用实验
一、实验目的和要求
通过实验理解掌握随机信号样本生成的原理和方法、掌握随机过程相关函数的计算原理和方法。
训练MATLAB程序代码编写能力,要求完成以下工作,并将实验结果与理论分析对照。
1.基于均匀分布伪随机数,掌握均匀分布白噪声典型生成方法。
2.基于均匀分布伪随机数,掌握高斯分布白噪声典型生成方法。
3.掌握随机信号相关函数计算、相关分析及实现方法。
二、实验原理和内容
1实验原理
较简单的伪随机序列产生方法是采用数论中基于数环理论的线性同余法(乘同余法、混合同余法),其迭代公式的一般形式为f(x)=(r*x+b)ModM,其离散形式为s(n+1)=[r*s(n)+b]ModM。
其中,s(n)为n时刻的随机数种子,r为扩展因子,b为固定扰动项,M为循环模,ModM表示对M取模。
为保证s(n)的周期为M,r的取值应满足r=4k+1,pM2,k与p的选取应满足:
r 通常公式中参数常用取值为s(0)=12357,r=2045,b=1,M=1048576。 较简单的高斯白噪声产生方法是基于概率论中的中心极限定理。 即无穷多个同分布随机变量之和构成随机变量服从高斯分布。 方便起见,可用N个(通常N=12)均匀分布随机变量之和Xi近似高斯分布随机变量。 若Xi,i=0,1,…,11在[0,1)上服从均匀分布,则Y= 近似服从均值为0,方差为1的高斯分布。 随机信号相关函数计算、相关分析及实现方法原理: 离散随机序列自相关函数定义为Rx(m)=E[x(n)x(n+m)]。 对于各态历经随机过程,统计平均可用时间平均代替,即Rx(m)= 工程实践中,无法获得无限长数据,只能用有限平均来近似,即Rx(m)= ,m=0,1,…,K-1;K 为保证估计质量,通常要求K< 此时Rx(m)也可以简化为 。 同理,也类似地计算互相关函数。 2实验内容 (1)编程实现产生10000个在(0,1)区间均匀分布随机数。 计算生成随机数的1~4阶矩,最大值,最小值,频度直方图。 (2)编程实现产生10000个N(3,4)高斯随机数。 计算生成随机数的1~4阶矩,最大值,最小值,频度直方图。 (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)计算生成随机数的1~4阶矩,最大值,最小值,频度直方图。 (3)编程实现产生10000个N(3,4)高斯随机数。 (4)计算生成随机数的1~4阶矩,最大值,最小值,频度直方 (5)编程实现产生10000个N(1,2)高斯随机数和10000个N(3,4)高斯随机数。 (6)计算其自相关函数,计算两个高斯随机信号的互相关函数。 (7)生成一个10000点高斯随机信号x(n): N(1,4)。 (8)将该信号延迟N点,N<200,得到随机信号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)ModM,其离散形式为s(n+1)=[r*s(n)+b]ModM。 其中,s(n)为n时刻的随机数种子,r为扩展因子,b为固定扰动项,M为循环模,ModM表示对M取模。 为保证s(n)的周期为M,r的取值应满足r=4k+1,pM2,k与p的选取应满足: r 通常公式中参数常用取值为s(0)=12357,r=2045,b=1,M=1048576。 2实验内容 (1)编程实现产生10000个在(0,1)区间均匀分布随机数。 计算生成随机数的1~4阶矩,最大值,最小值,频度直方图。 (2)编程实现产生10000个N(3,4)高斯随机数。 计算生成随机数的1~4阶矩,最大值,最小值,频度直方图。 (3)编程实现产生10000个N(1,2)高斯随机数和10000个N(3,4)高斯随机数。 计算其自相关函数,计算两个高斯随机信号的互相关函数。 (4)生成一个10000点高斯随机信号x(n): N(1,4)。 将该信号延迟N点,N<200,得到随机信号y(n)。 计算两个信号的互相关函数,搜索峰值位置估算延迟。 三、主要仪器设备 微型计算机、Matlab开发环境(本报告采用MATLAB2016a) (注: 以下为代码内容已经有详细的说明已包括步骤和操作办法) 四、实验步骤与操作方法 实验内容 (1): 编程实现产生10000个在(0,1)区间均匀分布随机数。 计算生成随机数的1~4阶矩,最大值,最小值,频度直方图 代码如下: %%清除以前数据缓存以及命令行窗口的显示 clear clc %%均匀分布随机数的产生 %生成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)。 %生成[0000] fori=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。 %四阶 end m5=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)。 %生成[0000] fori=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。 %四阶 end m5=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)高斯随机数。 计算生成随机数的1~4阶矩,最大值,最小值,频度直方图。 代码如下: %%清除以前数据缓存以及命令行窗口的显示 clear clc %%高斯分布随机数的产生 %生成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)。 %生成[0000] fori=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。 %四阶 end m5=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)。 %生成[0000] fori=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。 %四阶 end m5=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)高斯随机数。 计算其自相关函数,计算两个高斯随机信号的互相关函数。 代码如下: %%清除以前数据缓存以及命令行窗口的显示 clear clc %定义高斯随机的方差和均值及产生的数量 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)。 计算两个信号的互相关函数,搜索峰值位置估算延迟。 代码如下: %%清除以前数据缓存以及命令行窗口的显示 clear clc %定义高斯随机的方差和均值及产生的数量 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个随机高斯随机数,用来替换延时后的空位 %延时N fori=1: 10000 if(i<=100) x2(i)=0。 %将延时后的前100用零代替 else x2(i)=x1(i-N)。 end end figure,subplot(2,1,1),plot(x1(1: long))。 title('原随机信号') subplot(2,1,2),plot(x2(1: long),'r')。 %延迟与原随机信号同一张图中比较 title('用0替换延时后的延时信号') [cor11,lag11]=xcorr(x1,x2)。 figure,plot(lag11/fs,cor11) title('延时100且用高斯随机数替代延时后两个函数的互相关函数') %求最大值,和延时 max11=0。 fori=1: 10000 if(cor11(1,i)>max11) max11=cor11(1,i)。 delay11=lag11(1,i)。 end end max11 delay11 %延时N fori=1: 10000 if(i>N) x2(i)=x1(i-N)。 else x2(i)=x(i)。 %将延时后的前100用产生的高斯随机数代替 end end figure,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。 fori=1: 10000 if(cor12(1,i)>max12) max12=cor12(1,i)。 delay12=lag12(1,i)。 end end max12 delay12 附: 本次作业中用到的两个随机信号源代码 1.产生(0,1)区间均匀分布随机数的函数: functions=randuniform(M,b,r,first,num) %%调用示例: s=randuniform(1048576,1,2045,12357,10000) %其中,s(n)为n时刻的随机数种子,r为扩展因子,b为固定扰动项,M为循环模,ModM表示对M取模。 %通常公式中参数常用取值为s(0)=12357,r=2045,b=1,M=1048576。 s=zeros(1,num)。 s (1)=first。 fori=2: num s(i)=mod(s(i-1)*r+b,M)。 end s=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个均匀随机数的连线图(库函数)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 随机 信号 产生 相关 分析 及其 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)