您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于MATLAB的随机信号分析方法模板
基于MATLAB的随机信号分析方法一、蒙特卡罗模拟方法系统模拟:它是通过对系统建立数学模型,模拟产生实际环境的信号和杂波,用计算机来模拟实际系统的运行过程。系统模拟可用于系统设计阶段的方案论证、分析系统的性能。或者可以对现有的复杂系统进行分析其综合性能。系统模拟的关键是产生与实际环境相符合的观测数据或随机过程蒙特卡洛方法:也称为统计试验方法,它是采用统计的抽样理论来近似求解数学问题或物理问题,它既可以求解概率问题,也可以求解非概率问题,蒙特卡洛方法是系统模拟的重要方法。用一个例子来说明蒙特卡洛的基本思想:fx()0.50.5x()201xfx()d0.417pM()N0xrnd1()yrnd1()NN1x1yfx()ifi0M1forPNM00.5100.5110fx()10xp100()0.45p10000()0.418蒙特卡洛模拟的基本步骤建立合适的概率模型进行多次重复试验对重复试验结果进行统计分析(估计频率、均值等)、分析精度重复试验的次数称为蒙特卡洛仿真次数,试验次数越多,精度越高蒙特卡洛方法可以求解复杂系统的计算问题,如雷达检测系统的检测概率二、随机序列的产生1、均匀随机数的产生利用MATLAB函数x=rand(m,n)x=rand(100,1)2、任意分布随机数的产生反函数法变换法(1)反函数法定理:如果随机变量X具有连续分布函数FX(x),而r=是(0,1)上均匀分布的随机变量,则X=Fx-1(r)由此等式,根据(0,1)随机序列可以产生服从分布fX(x)的随机序列xi()()ixiXXrFxfxdx举例:指数分布随机数的产生()0xXfxex0()1iiixxxxiXrfxdxedxe1ln(1)iixr1lniixr或%指数分布随机数的产生N=200;r=rand(N,1);l=0.1;x=-log(r)/l;plot(x);瑞利分布:222()exp02Xxxfxx222220()expexp22iixiXxirfxdxxxxdx2lniixr%产生瑞利分布随机数N=500;sigma=1;r=rand(N,1);x=sigma*sqrt(-2*log(r));subplot(2,1,1);plot(x);y=ksdensity(x)subplot(2,1,2);plot(y);1(/)01exp(/)ixxiixredxx韦泊分布1(/)1()0xXxfxex雷达地杂波或海浪杂波服从该分布(ln)iixr%产生韦泊分布随机数N=500;b=1;a=1.2;r=rand(N,1);x=b*(-log(r)).^(1/a);subplot(2,1,1);plot(x);y=ksdensity(x)subplot(2,1,2);plot(y);(2)变换法12122lncos22lnsin2iiiiiixrryrrN(m,2)的正态随机数的产生122lncos2iiiiumxmrr3MATLAB的随机数生成函数1)独立同分布白噪声序列的产生(1)(0,1)均匀分布的白噪声序列rand()用法:x=rand(m,n)功能:产生mn的均匀分布随机数矩阵,例如,x=rand(100,1),产生一个100个样本的均匀分布白噪声列矢量。(2)正态分布白噪声序列randn()用法:x=randn(m,n)功能:产生mn的标准正态分布随机数矩阵,例如,x=randn(100,1),产生一个100个样本的正态分布白噪声列矢量。如果要产生服从N(,2)分布的随机矢量,则可以通过标准正态随机矢量来产生,MATLAB的语句为:x=+.*randn(100,1)。(3)韦伯分布白噪声序列weibrnd()用法:x=weibrnd(A,B,m,n);功能:产生mn的韦伯分布随机数矩阵,其中A、B是韦伯分布的两个参数。例如,x=weibrnd(1,1.5,100,1),产生一个100个样本的韦分布白噪声列矢量,韦伯分布参数a=1,b=1.5。其他分布的随机数产生函数还有瑞利分布、伽玛分布、指数分布等,在此不一一列举。4、相关正态随机矢量的产生产生N维正态随机矢量,要求服从如下概率密度112/21/211(,,...,)exp()()(2)||2TXNNfxxxx-MKx-MK其中K为协方差矩阵是对称正定矩阵11121212222NNNNNNNkkkkkkkkkKcov(,)ijijkXX1[,...,]TNXXX基本方法是先产生零均值、单位方差,且各个分量相互独立的标准正态随机矢量U,然后做变换X=AU+M其中A由协方差矩阵K确定TKAAA可以用矩阵分解函数得到Chol()5相关正态随机序列的产生----已知相关函数产生一个正态随机序列,要求相关函数满足22()1mXRmaaa11iiixaxu产生公式a=0.8;sigma=2;N=500;u=randn(N,1);x(1)=sigma*u(1)/sqrt(1-a^2);fori=2:Nx(i)=a*x(i-1)+sigma*u(i);endplot(x);MATLAB程序如果要产生任意形式的相关函数的相关正态随机序列根据相关函数确定协方差矩阵对协方差矩阵进行矩阵分解产生N维标准正态随机矢量做变换X=AU+M在进行矩阵分解时可以利用MATLAB的Cholesky矩阵分解函数chol(),利用chol()函数可以直接得到A矩阵随机信号分析的MATLAB函数一、特征估计对于各态历经过程,我们可以通过对随机序列的一条样本函数来获得该过程的统计特性,利用MATLAB的统计分析函数我们可以分析随机序列的统计特性。在以下的介绍中,我们假定随机序列X(n)和Y(n)是各态历经过程,他们的样本分别为x(n)和y(n),其中n=0,1,2,…N-1。1均值函数mean()用法:m=mean(x)功能:返回X(n)按估计的均值,其中x为样本序列x(n)(n=1,2,…,N-1)构成的数据矢量。11()NnxnN2方差函数var()用法:sigma2=var(x)功能:返回X(n)按估计的方差,这一估计是无偏估计。在实际中也经常采用下式估计方差,1201ˆ[]1NxnxnmN1201ˆ[]NxnxnmN互相关函数的估计3互相关函数估计xcorrc=xcorr(x,y)c=xcorr(x)c=xcorr(x,y,'option')c=xcorr(x,'option')xcorr(x,y)计算X与Y的互相关,矢量X表示序列x(n),矢量Y表示序列y(n)。xcorr(x)计算X的自相关。option选项是:'biased''unbiased''coeff''none'101ˆ()NmxnmnnRmxxN101ˆ()NmxnmnnRmxxNmNormalizesthesequencesotheautocorrelationsatzerolagareidentically1.0tousetheraw,unscaledcross-correlations(default)功率谱估计Periodogram周期图法periodogramWelchAveragedperiodogramsofoverlapped,windowedsignalsectionspwelchYule-WalkerARAutoregressive(AR)spectralestimateofatime-seriesfromitsestimatedautocorrelationfunctionpyulearpburgAutoregressive(AR)spectralestimationofatime-seriesbyminimizationoflinearpredictionerrorspburgCovarianceAutoregressive(AR)spectralestimationofatime-seriesbyminimizationoftheforwardpredictionerrorspcov4概率密度估计概率密度的估计有两个函数:ksdensity(),hist()ksdensity()函数直接估计随机序列概率密度的估计,它的用法是:[f,xi]=ksdensity(x)它的功能是估计用矢量x表示的随机序列在xi处的概率密度f。也可以指定xi,估计对应点的概率密度值,用法为:f=ksdensity(x,xi)MATLAB程序如下:a=0.8;sigma=2;N=200;u=randn(N,1);x(1)=sigma*u(1)/sqrt(1-a^2);fori=2:Nx(i)=a*x(i-1)+sigma*u(i);end[f,xi]=ksdensity(x);plot(xi,f);xlabel('x');ylabel('f(x)');axis([-151500.13]);直方图hist(),他的用法为hist(y,x),他的功能是画出用矢量y表示的随机序列的直方图,参数x表示计算直方图划分的单元,也是用矢量表示。例产生一组随机序列,并画出他的直方图。MATLAB程序如下:x=-2.9:0.1:2.9;y=normrnd(0,1,1000,1);hist(y,x);以上程序产生1000个标准正态随机数,画出的直方图如图所示。
本文标题:基于MATLAB的随机信号分析方法模板
链接地址:https://www.777doc.com/doc-3154905 .html