随机信号分析实验报告(基于MATLAB语言) 本文关键词:信号,随机,语言,实验,报告
随机信号分析实验报告(基于MATLAB语言) 本文简介:随机信号分析实验报告(基于MATLAB语言)姓名:班级:学号:随机信号分析实验报告——基于MATLAB语言姓名:_班级:_学号:专业:目录实验一随机序列的产生及数字特征估计2实验目的2实验原理2实验内容及实验结果3实验小结6实验二随机过程的模拟与数字特征7实验目的7实验原理7实验内容及实验结果8实验
随机信号分析实验报告(基于MATLAB语言) 本文内容:
随机信号分析实验报告(基于MATLAB语言)
姓名:
班级:
学号:
随机信号分析实验报告
——基于MATLAB语言
姓
名
:
_
班
级
:
_
学
号
:
专
业
:
目录
实验一
随机序列的产生及数字特征估计
2
实验目的2
实验原理2
实验内容及实验结果3
实验小结6
实验二
随机过程的模拟与数字特征7
实验目的7
实验原理7
实验内容及实验结果8
实验小结11
实验三
随机过程通过线性系统的分析12
实验目的12
实验原理12
实验内容及实验结果13
实验小结17
实验四
窄带随机过程的产生及其性能测试18
实验目的18
实验原理18
实验内容及实验结果18
实验小结23
实验总结23
实验一
随机序列的产生及数字特征估计
实验目的
1.
学习和掌握随机数的产生方法。
2.
实现随机序列的数字特征估计。
实验原理
1.
随机数的产生
随机数指的是各种不同分布随机变量的抽样序列(样本值序列)。进行随机信号仿真分析时,需要模拟产生各种分布的随机数。
在计算机仿真时,通常利用数学方法产生随机数,这种随机数称为伪随机数。伪随机数是按照一定的计算公式产生的,这个公式称为随机数发生器。伪随机数本质上不是随机的,而且存在周期性,但是如果计算公式选择适当,所产生的数据看似随机的,与真正的随机数具有相近的统计特性,可以作为随机数使用。
(0,1)均匀分布随机数是最最基本、最简单的随机数。(0,1)均匀分布指的是在[0,1]区间上的均匀分布,
U(0,1)。即实际应用中有许多现成的随机数发生器可以用于产生(0,1)均匀分布随机数,通常采用的方法为线性同余法,公式如下:
y0=1,yn=kynmod
N
xn=ynN
序列xn为产生的(0,1)均匀分布随机数。
定理1.1
若随机变量X
具有连续分布函数Fxx,而R
为(0,1)均匀分布随机变量,则有
X=Fx-1R
2.
MATLAB中产生随机序列的函数
(1)
(0,1)均匀分布的随机序列函数:rand
用法:x
=
rand(m,n)
功能:产生m×n
的均匀分布随机数矩阵。
(2)
正态分布的随机序列
函数:randn
用法:x
=
randn(m,n)
功能:产生m×n
的标准正态分布随机数矩阵。
如果要产生服从Nμ,σ2分布的随机序列,则可以由标准正态随机序列产生。
(3)
其他分布的随机序列
分布
函数
分布
函数
二项分布
binornd
指数分布
exprnd
泊松分布
poissrnd
正态分布
normrnd
离散均匀分布
unidrnd
瑞利分布
raylrnd
均匀分布
unifrnd
X2分布
chi2rnd
3.
随机序列的数字特征估计
对于遍历过程,可以通过随机序列的一条样本函数来获得该过程的统计特征。这里我们假定随机序列X(n)为遍历过程,样本函数为x(n),其中n=0,1,2,……N-1。那么,X(n)的均值、方差和自相关函数的估计为
mX=1Nn=0N-1xn
σX2=1N-1n=0N-1xn-mX2
RXm=1N-mn=0N-1xnxn+m
m=0,±1,±2?
利用MATLAB的统计分析函数可以分析随机序列的数字特征。
(1)
均值函数
函数:mean
用法:m
=
mean(x)
功能:返回按1.3式估计X(n)的均值,其中x为样本序列x(n)。
(2)
方差函数
函数:var
用法:sigma2
=
var(x)
功能:返回按(1.4)式估计X(n)的方差,其中x为样本序列x(n),这一估计为无偏估计。
(3)
互相关函数
函数:xcorr
用法:c
=
xcorr(x,y)
c
=
xcorr(x)
c
=
xcorr(x,y,opition
)
c
=
xcorr(x,opition
)
功能:xcorr(x,y)计算X(n)与Y(n)的互相关,xcorr(x)计算X(n)的自相关。
option
选项可以设定为:
biased
有偏估计
unbiased
无偏估计
coeff
m
=
0
时的相关函数值归一化为1
none
不做归一化处理
实验内容及实验结果
1.
采用线性同余法产生均匀分布随机数1000个,计算该序列均值和方差与理论值之间的误差大小。改变样本个数重新计算。
程序代码:
y=1;
k=7;
N=10^10;
xn=[];
for
i=1:1000
y=mod(y*k,N);
x=y/N;
xn=[xn
x];
end
m=mean(xn)
n=var(xn)
me=0.5-m
ne=1/12-n
实验结果:
m
=
0.4813
n
=
0.0847
me=
0.0187
ne=
-0.0013
改变样本数量重新计算:(理论值
m=0.5
n=1/12)
样本数量
m
误差
n
误差
100
0.4164
0.0836
0.0901
0.0068
500
0.4668
0.0332
0.0859
0.0026
1000
0.4813
0.0187
0.0847
0.0013
10000
0.4973
0.0027
0.0848
0.0015
50000
0.5009
0.0009
0.0837
0.0004
100000
0.4996
0.0004
0.0836
0.0003
2.
参数为λ的指数分布的分布函数为
FXx=1-e-λx
利用反函数法产生参数为0.5的指数分布随机数1000个,测试其方差和相关函数。
程序代码:
j=1:1999;
y=1;
k=7;
N=10^10;
xn=[];
for
i=1:1000
y=mod(y*k,N);
x=y/N;
xn=[xn
x];
end
y=(-2)*log(1-xn);
n=var(y)
c=xcorr(y,coeff
);
plot(j-1000,c);
实验结果:
方差
n=3.7596
自相关函数:
3.
产生一组N(1,4)分布的高斯随机数(1000个样本),估计该序列的均值、方差、和相关函数。
程序代码:
i=1:1000;
j=1:1999;
x=normrnd(1,2,1,1000);
m=mean(x)
n=var(x)
c=xcorr(x,coeff
);
subplot(211);
plot(i,x);
title(‘随机序列’);
subplot(212);
plot(j-1000,c);
title(‘自相关函数’);
实验结果:
均值
m=1.0082
方差
n=3.8418
实验小结
本次实验对随机数的生成做了练习。具体来说,包括线性同余法,生成已知分布函数的随机数,rand函数等,还有就是有关均值、方差、相关的调用函数。
实验二
随机过程的模拟与数字特征
实验目的
1.
学习利用
MATLAB模拟产生随机过程的方法。
2.
熟悉和掌握特征估计的基本方法及其
MATLAB实现。
实验原理
1.
正态分布白噪声序列的产生
MATLAB提供了许多产生各种分布白噪声序列的函数,其中产生正态分布白噪声序列的函数为randn。
函数:randn
用法:x
=
randn(m,n)
功能:产生
m×n的标准正态分布随机数矩阵。
如果要产生服从
N(μ,σ2)分布的随机序列,则可以由标准正态随机序列产生。如果
X~N0,1,则μ+σX~Nμ,σ。
2.
相关函数估计
MATLAB提供了函数
xcorr用于自相关函数的估计。
函数:xcorr
用法:c
=
xcorr(x,y)
c
=
xcorr(x)
c
=
xcorr(x,y,opition
)
c
=
xcorr(x,opition
)
功能:xcorr(x,y)计算
X
(n)与
Y(n)的互相关,xcorr(x)计算
X
(n)的自相关。
Option
选项可以设定为:
biased
有偏估计。
unbiased
无偏估计。
coeff
m
=0时的相关函数值归一化为1。
none
不做归一化处理。
3.
功率谱估计
对于平稳随机序列
X
(n),如果它的相关函数满足
m=-∞+∞RXm<∞
那么它的功率谱定义为自相关函数RXm的傅里叶变换:
SXω=m=-∞+∞RXme-jmω
功率谱表示随机信号频域的统计特性,有着重要的物理意义。我们实际所能得到的随机信号的长度总是有限的,用有限长度的信号所得的功率谱只是真实功率谱的估计,称为谱估计或谱分析。
功率谱估计的方法有很多种,以下是两种通用谱估计方法。
(1)
自相关法先求自相关函数的估计RXm,然后对自相关函数做傅里叶变换。
SXω=m=-N-1N-1RXme-jmω
其中N表示用于估计样本序列的样本个数。
(2)
周期图法
先对样本序列
x(n)做傅里叶变换
Xω=n=0N-1xne-jmω
其中0≤n≤N-1,则功率谱估计为
SXω=1NXω2
MATLAB函数
periodogram实现了周期图法的功率谱估计。
函数:periodogram
用法:[Pxx,w]
=
periodogram(x)
[Pxx,w]
=
periodogram(x,window)
[Pxx,w]
=
periodogram(x,window,nfft)
[Pxx,f]
=
periodogram(x,window,nfft,fs)
periodogram(.)
功能:实现周期图法的功率谱估计。其中:
Pxx为输出的功率谱估计值;
f为频率向量;
w为归一化的频率向量;
window代表窗函数,这种用法种对数据进行了加窗,对数据加窗是为了减少功率谱估计中因为数据截断产生的截断误差,表
2.1列出了产生常用窗函数的
MATLAB函数
窗函数
MATLAB函数
窗函数
MATLAB函数
矩形窗
boxcar
Blackman窗
blackman
三角窗
triang
Chebyshev窗
chebwin
Hanning窗
hann
Bartlett窗
bartlett
Hamming
hamming
Kaiser窗
kaiser
nfft设定
FFT算法的长度;
fs表示采样频率;
如果不指定输出参数(最后一种用法),则直接会出功率谱估计的波形。
实验内容及实验结果
1.
按如下模型产生一组随机序列
xn=0.8xn-1+ωn
其中ωn是均值为1,方差为4的正态分布白噪声序列。估计过程的自相关函数和功率谱。
程序代码:
w=normrnd(1,4,1,1024);
x(1)=w(1);
i=2;
while
i<1025
x(i)=0.8*x(i-1)+w(i);
i=i+1;
end
R=xcorr(x);
[S,W]=periodogram(x);
subplot(3,1,1);
plot(x);title(
x(n)
);axis
tight;
subplot(3,1,2);
plot(R);title(
R(m)
);axis
tight;
subplot(3,1,3);
plot(S);title(
S(W)
);axis
tight;
实验结果:
2.
设信号为
xn=sin2πf1n+2cos2πf2n+ωn
其中f1=0.05,f2=0.12,ωn为正态分布白噪声序列,试在N=256和N=1024点时,分别产生随机序列xn,画出xn的波形并估计xn的相关函数和功率谱。
N=256:
程序代码:
N=256;
n=1:1:N;
w=randn(1,N);
f1=0.05;
f2=0.12;
x=sin(2*pi*f1*n)+2*cos(2*pi*f2*n)+w(n);
R=xcorr(x);
[S,W]=periodogram(x);
subplot(3,1,1);
plot(x);title(
x(n)
);axis
tight;
subplot(3,1,2);
plot(R);title(
R(m)
);axis
tight;
subplot(3,1,3);
plot(S);title(
S(W)
);axis
tight;
实验结果:
N=1024:
程序代码:
N=1024;
n=1:1:N;
w=randn(1,N);
f1=0.05;
f2=0.12;
x=sin(2*pi*f1*n)+2*cos(2*pi*f2*n)+w(n);
R=xcorr(x);
[S,W]=periodogram(x);
subplot(3,1,1);
plot(x);title(
x(n)
N=256
);axis
tight;
subplot(3,1,2);
plot(R);title(
R(m)
N=256
);axis
tight;
subplot(3,1,3);
plot(S);title(
S(W)
N=256
);axis
tight;
实验结果:
实验小结
本次实验对随机序列的产生进行了复习,对自相关函数与功率谱密度的产生进行了练习。并且验证了自相关函数与功率谱密度呈傅立叶变换关系。
实验三
随机过程通过线性系统的分析
实验目的
1.
理解和分析白噪声通过线性系统后输出的特性。
2.
学习和掌握随机过程通过线性系统后的特性,验证随机过程的正态化问题。
实验原理
1.
白噪声通过线性系统
设连续线性系统的传递函数为Hω或Hs,输入白噪声的功率谱密度为SXω=N02,那么系统输出的功率谱密度为
SYω=Hω2?N02
输出自相关函数为
RYτ=N04π-∞+∞Hω2e-jωτdω
输出相关系数为
γYτ=RYτRY0
输出相关时间为
τ0=0∞γYτdτ
输出平均功率为
EY2τ=N02π0∞Hω2dω
上述式子表明,若输入端是具有均匀谱的白噪声,则输出端随机信号的功率谱主要由系统的幅频特性Hω决定,不再是常数。
2.
等效噪声带宽
在实际中,
常常用一个理想系统等效代替实际系统的H(ω),因此引入了等效噪声带宽的概念,他被定义为理想系统的带宽。等效的原则是,理想系统与实际系统在同一白噪声的激励下,两个系统的输出平均功率相等,理想系统的增益等于实际系统的最大增益。
实际系统的等效噪声带宽为
?ωe=1Hωmax20∞Hω2dω
或
?ωe=12jHωmax2-j∞j∞HsH-sds
3.
线性系统输出端随机过程的概率分布
(1)
正态随机过程通过线性系统
若线性系统输入为正态过程,则该系统输出仍为正态过程。
(2)
随机过程的正态化
随机过程的正态化指的是,非正态随机过程通过线性系统后变换为正态过程。任意分布的白噪声通过线性系统后输出是服从正态分布的;宽带噪声通过窄带系统,输出近似服从正态分布。
实验内容及实验结果
设白噪声通过图
3.1所示的
RC电路,分析输出的统计特性。
图3.1
RC电路
(1)
试推导系统输出的功率谱密度、相关函数、相关时间和系统的等效噪声带宽。
经计算,结果如下:
传输函数
H(ω)=11+jωRC
输出功率谱密度
S(ω)=N2+2ω2R2C2
输出自相关函数为:
RYτ=N0b4e-bτ
其中b=1RC
相关时间为:
τ0=1b=RC
等效噪声带宽为:
?ωe=0∞b2b2+ω2dω=π2b=π2RC
若输入为高斯白噪声,则输出均值为0,方差σ2=R0=N0b4,服从高斯分布,概率密度函数为:
fYy=2πbN0exp?{-2y2πbN0}
(2)
采用Matlab模拟正态分布白噪声通过上述RC电路,观察输入和输出的噪声波形以及输出噪声的概率密度。
程序代码:
R=10;
C=0.1;
b=1/(R*C);
n=1:1:128;
h=b*exp(-n*b);
x=randn(1,4096);
y=conv(x,h);
[fy
yi]=ksdensity(y);
subplot(3,1,1)
plot(x);axis
tight;
title(
x(n)
);
subplot(3,1,2)
plot(y);axis
tight;
title(
y(n)
);
subplot(3,1,3)
plot(fy);axis
tight;
title(
fy
);
运行结果:
(3)
模拟产生均匀分布的高斯白噪声通过上述RC电路,观察输入和输出的噪声波形以及输出噪声的概率密度。
程序代码:
R=10;
C=0.1;
b=1/(R*C);
n=1:1:256;
h=b*exp(-n*b);
x=rand(1,1024);
x=x-0.5;
y=conv(h,x);
[fy
yi]=ksdensity(y);
subplot(3,1,1);plot(x);title(
x(n)
);axis
tight;
subplot(3,1,2);
plot(y);
title(
y(n)
);axis
tight;
subplot(3,1,3);
plot(fy);
title(
fy
);
axis
tight;
运行结果:
(4)
改变RC电路的参数(电路的RC值),重做(2)和(3),与之前的结果进行比较。
a)
改变RC的值为10000
0.1
高斯输入:
均匀分布输入:
b)
改变RC的值为
10
0.001
高斯输入:
均匀分布输入:
实验小结
若线性系统输入为正态过程,则该系统输出仍为正态过程。
非正态随机过程通过线性系统后变换为正态过程。任意分布的白噪声通过线性系统后输出是服从正态分布的;宽带噪声通过窄带系统,输出近似服从正态分布。
低通系统通带过窄时,输出与输入差别很大,因为只有低频可以通过,高频量被抑制了。
实验四
窄带随机过程的产生及其性能测试
实验目的
1.
理解和分析白噪声通过线性系统后输出的特性。
2.
掌握窄带随机过程的特性,包括均值(数学期望)、方差、相关函数及功率谱密度等。
实验原理
1.
窄带随机过程的莱斯表达式
任何一个实平稳窄带随机过程X
(t)都可以表示为
Xt=atcosω0t-btsinω0t
上式称为莱斯表达式,根据上式可以模拟产生窄带随机过程,具体过程如图4.1
所示。
图4.1
窄带随机过程的产生
2.
窄带随机过程包络与相位的概率密度
包络的概率密度为fAAt=Atσ2exp-At22σ2,At≥0,服从瑞利分布。
相位的概率密度为fφφt=12π,0≤φt≤2π,呈均匀分布。
3.
窄带随机过程包络平方的概率密度
包络平方的概率密度为fUut=12σ2exp-ut22σ2,ut≥0,为指数概率密度函数。。
实验内容及实验结果
1.
按图4.1所示结构框图,基于随机过程的莱斯表达式,用MATLAB产生一满足条件的窄带随机过程。
程序代码
n=1:1:1024;
h=exp(-n);
c1=randn(1,1024);
a=conv(c1,h);
c2=randn(1,1024);
b=conv(c2,h);
fc=10000;
i=1;
x=zeros(1,1024);
while
i<1025
x(i)=a(i)*cos(2*pi*fc*i)-b(i)*sin(2*pi*fc*i);
i=i+1;
end
plot(x);
title(
x
);axis
tight;
实验结果
2.
画出该随机过程的若干次实现,观察其形状。
实验结果
3.
编写MATLAB程序计算该随机过程的均值函数、自相关函数、功率谱、包络、包络平方及相位的一维概率密度,画出相应的图形并给出解释。
程序代码:
n=1:1:1024;
h=exp(-n);
c1=randn(1,1024);
a=conv(c1,h);
c2=randn(1,1024);
b=conv(c2,h);
fc=10000;
i=1;
x=zeros(1,1024);
while
i<1025
x(i)=a(i)*cos(2*pi*fc*i)-b(i)*sin(2*pi*fc*i);
i=i+1;
end
subplot(3,2,1);plot(x);title(
x
);axis
tight;
%-----------------------均值
subplot(3,2,2);plot(R);title(
R(x)
);axis
tight;
%-----------------------功率谱密度-------------------------
[S,w]=periodogram(x);
subplot(3,2,3);plot(S);title(
S(w)
);axis
tight;
%-----------------------包络-------------------------
A=zeros(1,1024);
i=1;
while(i<1025)
利用循环,根据A(t)=a(t)2+b(t)2得到包络
A(i)=sqrt(a(i)^2+b(i)^2);
i=i+1;
end
[fA
j]=ksdensity(A);
subplot(3,2,4);plot(fA);
title(
f(A)
);axis
tight;
%-----------------------包络平方-------------------------
i=1;
while(i<1025)
%利用循环得到包络的平方
A2(i)=A(i)^2;
i=i+1;
end
[fA2
j]=ksdensity(A2);
subplot(3,2,5);plot(fA2);title(
f(A^2)
);axis
tight;
%-----------------------相位-------------------------
i=1;
while(i<1025)
%根据φ(t)=arctan?(b(t)/a(t))得到包络相位
fai(i)=atan(b(i)/a(i));
i=i+1;
end
[fp
j]=ksdensity(fai);
subplot(3,2,6);plot(fp);
title(
f(p)
);axis
tight;
实验结果:
m
=0.0038
均值约等于0
包络的概率密度近似为瑞利分布
包络平方的概率密度近似为指数概率密度
包络的相位近似为均匀分布,此时样本数为1024
如果加大样本数至32768,则相位的概率密度函数就更接近于均匀分布了
实验小结
通过本次实验我学会了基于随机过程的莱斯表达式产生窄带随机过程的方法。掌握了窄带随机过程的特性,包括均值、方差、相关函数及功率谱密度等。通过实验验证了窄带随机过程包络的概率密度分布为瑞丽分布,相位的概率密度分布为均匀分布,包络平方的概率密度分布为指数分布。
实验总结
总结这四次随机信号分析实验,我觉得收获最大的地方便是学会利用MATLAB进行随机信号分析。经过此次实验之后,我掌握了随机信号的初始化,信号的各种分析方法,同时也通过MATLAB的画图功能直观的了解了随机信号处理之后的结果。通过这次实验,我收获了很多,同时也非常感谢老师的教导,才有了这样的成果。
24