matlab随机白噪声_KPW算法(3)——带色随机数生成和时钟信号仿真

本文介绍了在MATLAB中如何生成带色随机数,特别是用于控制系统和随机过程仿真的相位噪声建模。通过使用MATLAB内置的rand和randn函数生成白噪声,然后利用滤波器概念转化成所需颜色的噪声。文中详细阐述了如何生成闪烁相位噪声,并提供了MATLAB代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行控制系统仿真和随机过程仿真中,产生各种颜色的随机数是必不可少的一步。考虑到实现的方便,这里使用matlab来进行仿真。通常的做法是先利用计算机自带的高斯白噪声生成函数生成白噪声,然后再利用算法产生所需要颜色的噪声,下面逐步进行介绍。

matlab自带了白噪声随机数生成算法,rand和randn,虽然其都是生成白噪声,但是rand产生的是均匀分布的噪声,而randn产生的是高斯分布的白噪声。这两种方法产生的功率谱密度如下图所示,可以看到这两种方法生成的都是白噪声,仅是功率谱的幅值稍有不同。

c24c8a80095405ddf217b4d757d7288d.png

使用直方图能更直观的观察到其差异:

a022e375fb7665fb6a370d67e9a3b88c.png

fd24f431017ab1643e2153a8a0a070b8.png

在时钟产生的相位噪声里,噪声通常可以分为以下五种:

a40e0af26118c3f2974b4d63da5c84fb.png

因此,我们需要对着五种噪声进行建模。

我们可以利用滤波器的概念来产生这些噪声。在数字信号中,我们知道,如果一个信号是白噪声,功率谱为S(f) = b0,即其功率谱密度与傅里叶频率无关,那么当这个信号通过一个1/f滚降的低通滤波器时,其输出将为So(f)=b0/f,即闪烁相位噪声。

matlab代码如下

N = 1e4;

x = rand(N,1);

xf = x;

for ind = 2:N

xf(ind) = xf(ind-1)+x(ind);

end

xf的功率谱密度如下图所示,其功率谱密度以滚降,

2b68cd4b64daa207177a545512c7ff7c.png

同理,利用差分的方法,也可以得到功率谱密度正比于傅里叶频率的随机信号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值