基于MATLAB的随机信号分析方法蒙特卡罗模拟方法系统模拟
基于MATLAB的随机信号分析方法 随机信号分析的MATLAB函数 一、特征估计 * 一、蒙特卡罗模拟方法 系统模拟:它是通过对系统建立数学模型,模拟产生实际环境的信号和杂波,用计算机来模拟实际系统的运行过程。系统模拟可用于系统设计阶段的方案论证、分析系统的性能。或者可以对现有的复杂系统进行分析其综合性能。 系统模拟的关键是产生与实际环境相符合的观测数据或随机过程 蒙特卡洛方法: 也称为统计试验方法,它是采用统计的抽样理论来近似求解数学问题或物理问题,它既可以求解概率问题,也可以求解非概率问题,蒙特卡洛方法是系统模拟的重要方法。 用一个例子来说明蒙特卡洛的基本思想: 蒙特卡洛模拟的基本步骤 建立合适的概率模型 进行多次重复试验 对重复试验结果进行统计分析(估计频率、均值等)、分析精度 重复试验的次数称为蒙特卡洛仿真次数,试验次数越多,精度越高 蒙特卡洛方法可以求解复杂系统的计算问题,如雷达检测系统的检测概率 二、随机序列的产生 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 举例:指数分布随机数的产生 或 % 指数分布随机数的产生 N=200; r=rand(N,1); l=0.1; x=-log(r)/l; plot(x); 瑞利分布: % 产生瑞利分布随机数 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); 韦泊分布 雷达地杂波或海浪杂波服从该分布 % 产生韦泊分布随机数 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) 变换法 N(m,?2)的正态随机数的产生 3 MATLAB的随机数生成函数 1) 独立同分布白噪声序列的产生 (1) (0,1)均匀分布的白噪声序列rand() 用法:x=rand(m,n) 功能:产生m?n的均匀分布随机数矩阵,例如,x=rand(100,1),产生一个100个样本的均匀分布白噪声列矢量。 (2) 正态分布白噪声序列randn() 用法:x=randn(m,n) 功能:产生m?n的标准正态分布随机数矩阵,例如,x=randn(100,1),产生一个100个样本的正态分布白噪声列矢量。如果要产生服从N(?,?2)分布的随机矢量,则可以通过标准正态随机矢量来产生, MATLAB的语句为: x=?+?.*randn(100,1)。 (3) 韦伯分布白噪声序列weibrnd() 用法:x=weibrnd(A,B,m,n); 功能:产生m?n的韦伯分布随机数矩阵,其中A、B是韦伯分布的两个参数。例如,x=weibrnd(1,1.5,100,1),产生一个100个样本的韦分布白噪声列矢量,韦伯分布参数a=1,b=1.5。 其他分布的随机数产生函数还有瑞利分布、伽玛分布、指数分布等,在此不一一列举。 4、相关正态随机矢量的产生 产生N维正态随机矢量,要求服从如下概率密度 其中K为协方差矩阵 是对称正定矩阵 基本方法是先产生零均值、单位方差,且各个分量相互独立的标准正态随机矢量U,然后做变换 X=AU+M 其中A由协方差矩阵K确定 A可以用矩阵分解函数得到 Chol() 5 相关正态随机序列的产生----已知相关函数 产生一个正态随机序列,要求相关函数满足 a<1 产生公式 a=0.8; sigma=2; N=500; u=randn(N,1); x(1)=sigma*u(1)/sqrt(1-a^2); for i=2:N x(i)=a*x(i-1)+sigma*u(i); end plot(x); MATLAB程序 如果要产生任意形式的相关函数的相关正态随机序列 根据相关函数确定协方差矩阵 对协方差矩阵进行矩阵分解 产生N维标准正态随机矢量 做变换X=AU+M 在进行矩阵分解时可以利用MATLAB的Cholesky矩阵分解函数chol(),利用chol()函数可以直接得到A矩阵 对于各态历经过程,我们可以通过对随机序列的一条样本函数来获得该过程的统计特