实验一 随机信号的产生相关分析与其应用实验.docx

上传人:b****7 文档编号:23598321 上传时间:2023-05-18 格式:DOCX 页数:29 大小:922.31KB
下载 相关 举报
实验一 随机信号的产生相关分析与其应用实验.docx_第1页
第1页 / 共29页
实验一 随机信号的产生相关分析与其应用实验.docx_第2页
第2页 / 共29页
实验一 随机信号的产生相关分析与其应用实验.docx_第3页
第3页 / 共29页
实验一 随机信号的产生相关分析与其应用实验.docx_第4页
第4页 / 共29页
实验一 随机信号的产生相关分析与其应用实验.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

实验一 随机信号的产生相关分析与其应用实验.docx

《实验一 随机信号的产生相关分析与其应用实验.docx》由会员分享,可在线阅读,更多相关《实验一 随机信号的产生相关分析与其应用实验.docx(29页珍藏版)》请在冰豆网上搜索。

实验一 随机信号的产生相关分析与其应用实验.docx

实验一随机信号的产生相关分析与其应用实验

大连理工大学实验预习报告

学院(系):

信息与通信工程学院专业:

电子信息工程班级:

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个均匀随机数的连线图(库函数)

 

图1-1.7:

前100个均匀随机数的连线图(库函数)

图1-1.9:

10000个均匀随机变量频度直方图(库函数)

图1-1.8:

10000个均匀随机数的数据点图(自编函数)

图1-1.10:

估得的概率密度图(库函数)

 

以下是得到的运算数据:

表1-1.1实验内容

(1)自编函数数据处理记录表

均值

均方值

三阶原点矩

0.49724

0.33062

0.24762

四阶原点矩

最小值

最大值

0.19795

7.6294e-06

0.99986

表1-1.2实验内容

(1)库函数数据处理记录表

均值

均方值

三阶原点矩

0.49956

0.33246

0.24874

四阶原点矩

最小值

最大值

0.19847

7.0261e-05

0.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个高斯随机数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1