白噪声:利用Matlab进行仿真与分析

定义

具有恒定功率谱密度(PSD)功能的随机过程(或可视化信号)是白噪声过程。

功率谱密度

功率谱密度函数(PSD)显示每个光谱分量中包含的功率。例如,对于固定频率的正弦波,PSD图将只包含给定频率下的一个频谱分量。PSD是一个偶数函数,因此绘制时频率分量将在Y轴上镜像。因此,对于固定频率的正弦波,PSD的双面图将有两个分量–一个在正弦波的+ve频率,另一个在–ve频率。(知道如何绘制PSD/FFT在Python中&在Matlab中)

高斯和均匀白噪声:

白噪声信号(过程)由一组独立的同分布随机变量组成。在离散意义上,白噪声信号由一系列独立的样本组成,并由相同的样本生成概率分布例如,可以使用随机数生成器生成白噪声信号,其中所有样本都遵循给定的高斯分布。这称为高斯白噪声(WGN)或高斯白噪声。类似地,白噪声信号由均匀分布称为均匀白噪声。

高斯噪声和均匀噪声常用于系统建模。在建模/仿真中,可以使用适当的随机生成器生成白噪声。可以使用以下方法生成高斯白噪声兰登Matlab中的函数,它生成遵循高斯分布的随机数。同样,兰特函数可用于在Matlab中生成遵循均匀分布的均匀白噪声。当使用随机数生成器时,它会根据给定的分布生成一系列随机数。让我们以生成长度为10的高斯白噪声为例,使用随机数Matlab中的函数–平均值为零,标准偏差为1。

>>mu=0;σ=1;>>噪声=sigma*randn(1,10)+mu噪音=-1.5121 0.7321-0.1621 0.4651 1.4284 1.0955-0.5586 1.4362-0.8026 0.0949

什么是身份证?

这只是从标准正态分布中生成10个随机数。正如我们所知,白过程被视为由几个随机变量组成的随机过程,遵循相同的概率分布函数(PDF)。上面的10个随机数是从相同的PDF(标准正态分布)中生成的。这种情况称为“同分布”条件。上述单个样本彼此“独立”。此外,每个样本都可以看作是一个随机变量的实现。实际上,我们已经生成了一个由10个随机变量的实现组成的随机过程。因此,上述过程由“独立同分布”(i.i.d)随机变量构成。

严格和弱定义的白噪声:

由于白噪声过程是由i.i.d随机变量/样本构建的,所有样本遵循相同的潜在概率分布函数(PDF)。因此,过程的联合概率分布函数不会随时间的任何变化而变化。这被称为平稳过程。因此,该噪声是一个平稳过程。与静止过程一样,静止过程可分为严格意义静止(SSS)和广域静止(WSS)过程,我们可以有白噪声即SSS和白噪声即WSS。相应地,他们可以被称为严格地定义白噪声信号定义白噪声信号.

协方差函数/矩阵是什么?

用\(x(t)\)表示的白噪声信号在弱意义下定义是一个更实际的条件。这里,样本在统计上是不相关的,并且具有相同的分布,方差等于\(\σ^2 \)。通过使用协方差函数来指定此条件

\[COV\left(x_i,x_j\right)=\begin{cases}\sigma^2,&\quad i=j\\0,&\quad i\neq j\end{casesneneneep \]

为什么我们需要协方差函数?因为,我们处理的是一个由随机变量(上述建模示例中的10个变量)组成的随机过程。这种过程被视为多元随机向量或多元随机变量.

对于多元随机变量,协方差函数指定了给定随机过程中每个变量的相互行为。协方差函数将方差的概念推广到多个维度。

上述方程以矩阵形式表示时,给出了白噪声随机过程的协方差矩阵。由于此过程中的随机变量在统计上不相关,协方差函数仅包含沿对角线的值。

\[C_{xx}=\begin{bmatrix}\sigma^2&\cdots&0\\vdots&\sigma ^2&\ vdots\\0&\cdotes&\sigma^2\end{bmatriax}=\sigma-2\mathbf{I}\]

上面的矩阵表明每个随机变量只存在自相关函数。互相关值为零(样本/变量之间在统计上互不相关)。对角线元素等于方差,矩阵中的所有其他元素为零。弱定义白噪声的系综自相关函数由给出。这表明弱定义白噪音过程的自相关函数除滞后时外处处为零。

\[R_{xx}(\tau)=E\左[x(t)x^*(t-\tau

相关主题:在Matlab中构造自相关矩阵

频域特性:

维纳-钦钦定理声明:广义静态过程(WSS)通过对随机过程的自相关函数进行傅里叶变换,可以得到随机过程的功率谱密度函数S_{xx}(f)。在连续时域中,这表示为

\[S_{xx}(f)=f\左[R_{xxx}(\tau)\右]=\int_{-\infty}^{\infty}R_{xx}[\tau(\tao)e^{-j 2\pi f\tau}d\tau]

对于弱定义的白噪声过程,我们发现平均值是一个常数,其协方差不随时间变化。这是WSS进程的一个充分条件。因此,我们可以应用韦纳-钦钦定理。因此,弱定义白噪声过程的功率谱密度在整个频谱中是恒定的(平坦的)(图1)。常数的值等于噪声信号的方差或功率。

\[S_{xx}(f
维纳-钦钦定理
图1:Weiner-Khintchine定理说明

在Matlab中测试白高斯噪声的特性:

使用Matlab中的randn函数生成一个长度为(L=100000)的高斯白噪声信号并绘制它。假设pdf是高斯pdf,平均值为(mu=0),标准偏差为(sigma=2)。因此,高斯pdf的方差为(sigma^2=4)。高斯随机变量的理论PDF由下式给出

\[f_X(X)=\frac{1}{\sigma\sqrt{2\pi}}\cdot exp\left[–\frac}\left(X–\mu\right)^2}{2\sigma^2}\right]]

以下电子书中提供了更多仿真技术
使用Matlab的数字调制
使用Python的数字调制
Matlab中的无线通信系统

全部清除;clc;全部关闭;L=100000;%随机信号的采样长度mu=0;σ=2;X=σ*randn(L,1)+μ;图();子区(2,1,1)图(X);title(['白噪声:\mu_x=',num2str(mu),'\sigma^2=',num2str(sigma^2)])xlabel(“样品”)ylabel(“样本值”)网格打开;
在Matlab中模拟白噪声
图2:模拟噪声样本

绘制直方图并通过绘制高斯随机变量的理论pdf来验证直方图。

如果您倾向于使用Python编程,转到此处了解有关使用Matplotlib包绘制直方图的信息.

子区(2,1,2)n=100;%Histrogram存储箱的数量[f,x]=历史(x,n);巴(x,f/trapz(x,f));坚持;%高斯随机变量的理论概率密度函数g=(1/(sqrt(2*pi)*sigma))*exp(-((x-mu))^2) /(2*sigma^2));图(x,g);拖延;网格打开;标题(“高斯白噪声理论PDF和模拟直方图”);图例(“柱状图”,“理论PDF”);xlabel(“箱子”);ylabel(“PDF f_x(x)”);
Matlab中白噪声直方图的绘制
图3:高斯RV的模拟和理论PDF图

计算自相关函数白噪音的影响。计算的自相关函数必须适当缩放。如果“互相关系数'函数(内置于Matlab中)用于计算自相关函数,请使用'有偏见的'参数来正确缩放它。

图();Rxx=1/L*转换(翻转(X),X);滞后=(-L+1):1:(L-1);%替代方法%[Rxx,滞后]=xcorr(X,‘偏倚’);%参数“biased”用于按1/L正确缩放%将自相关与样本长度归一化,以实现适当的缩放图(滞后,Rxx);标题(“白噪声的自相关函数”);xlabel(“滞后”)ylabel(“相关性”)网格打开;
Matlab中白噪声的自相关
图4:产生噪声的自相关函数

模拟PSD:

模拟功率谱密度白噪声(PSD)是一件有点棘手的事情。这里有两个问题:1)生成的样本长度有限。这与应用截断无限系列随机样本是同义的。这意味着滞后是在固定范围内定义的。(FFT和频谱泄漏–可以在此处找到有关此主题的其他资源)2)仿真中使用的随机数生成器是伪随机生成器。由于这两个原因,当您对生成的自相关值应用傅里叶变换时,将不会得到平坦的psd谱。通过产生足够长的随机信号并在随机信号的多次实现中平均psd,可以将psd的波动效应降至最低。

将高斯白噪声模拟为多元高斯随机向量:

为了验证白噪声的功率谱密度,我们将使用假设噪声为(N)高斯随机变量的组合的方法。我们希望将PSD平均到这种实现的L上。由于每个实现都有(N)个高斯随机变量(N个单独的样本),协方差矩阵(C_{xx})的维数为(N乘以N)。此多元情况的平均向量为维数(1乘以N)。

Cholesky分解协方差矩阵给出了多元情况下的等效标准偏差。Cholesky分解可以看作是平方根运算。这里使用Matlab的randn函数生成具有给定平均矩阵和协方差矩阵的多维高斯随机过程。

%白高斯噪声过程恒定PSD的验证%具有任意平均值和标准偏差sigmamu=0;%噪声过程每次实现的平均值σ=2;%噪声过程的每个实现的SigmaL=1000;%要平均的随机信号实现数N=1024;%每个实现的样本长度设置为FFT的2次幂%生成随机过程-白高斯噪声过程MU=μ*个数(1,N);%所有实现的平均向量Cxx=(σ^2)*诊断(个数(N,1));%随机过程的协方差矩阵R=胆固醇(Cxx);%协方差矩阵的Cholesky%用给定的平均向量和%协方差矩阵Cxxz=代表(MU,L,1)+兰登(L,N)*R;

计算上述生成的多维过程的PSD,并对其进行平均,以获得平滑图。

%默认情况下,FFT在每列上执行-Normal命令FFT(z)%求每行多元分布的FFT%命令-fft(z,[],2)Z=1/sqrt(N)*fft(Z,[],2);%按平方米(N)缩放;Pzavg=平均值(Z.*conj(Z));%从fft计算平均功率正常频率=[-N/2:N/2-1]/N;Pzavg=fftshift(Pzavg);%将零频率分量移到频谱中心曲线图(normFreq,10*log10(Pzavg),‘r’);轴([-0.5 0.5 0 10]);网格打开;ylabel(“功率谱密度(dB/Hz)”);xlabel(“归一化频率”);标题(“白噪声功率谱密度”);
Matlab中白噪声的PSD功率谱密度
图5:产生噪声的功率谱密度

产生噪声的PSD图显示所有频率的几乎固定功率。换句话说,对于白噪声信号,PSD在所有频率(\(-\infty\)到\(+\infty))上都是恒定的(平坦的)。上图中的y轴以dB/Hz单位表示。从图中可以看出,(常数;功率=10log{10}(σ^2)=10log}(4)=6;分贝)。

应用程序

在渠道建模中,我们经常会遇到加性高斯白噪声信道。要了解更多有关渠道模型及其模拟的信息,请继续阅读本文:在Matlab和Python中模拟AWGN信道。

评价此文章: 可怜的低于平均水平平均很好杰出的(55平均票数:4.42(共5个)

参考文献:

[1]罗伯特·格罗弗·布朗,《随机信号分析和卡尔曼滤波导论》,约翰·威利父子出版社,1983年.
[2]Athanasios Papoulis,《概率、随机变量和随机过程》,第三版,WCB/McGraw-Hill,1991.

作者的书籍

Matlab中的无线通信系统
Matlab中的无线通信系统
第二版(PDF)

注意:此帖子中包含评分,请访问此帖子进行评分。
使用Python的数字调制
使用Python的数字调制
(PDF电子书)

注意:此帖子中包含评分,请访问此帖子进行评分。
数字模块使用matlab图书封面
使用Matlab的数字调制
(PDF电子书)

注意:此帖子中包含评分,请访问此帖子进行评分。
手绘通信工程最佳书籍
信号处理最佳书籍

关于“白噪声:用Matlab进行仿真与分析”的33点思考

  1. 亲爱的先生,您能指导我如何在动态系统的早期故障检测过程中添加非均匀噪声(AWGN除外)吗

    答复
  2. 先生,你能指导我吗,我如何在一系列x轴上连接多个在y轴上具有不同值的图,并且x轴在matlab中必须按递增顺序排列

    答复
  3. 嗨,我正试图找出如何将最后一个示例转换为以V/sqrt(Hz)为单位的实际噪声密度,假设您的随机变量是以1kHz采样的伏特数(为了便于讨论),将标准偏差=RMS=噪声密度(ND)在感兴趣带宽(BW)上的积分联系在一起正如在opamp或传感器噪声分析中通常所做的那样。所以我想说RMS(伏特)=ND*sqrt(BW)。我认为您显示的值(6dBV=4.0 V)实际上有V^2单位,并且您没有除以任何频谱带宽,但由于您将BW标准化为1.0Hz(从-0.5Hz到0.5Hz),因此在这种特殊情况下实际上不需要进行分割。所以我*认为*要转换为我要寻找的噪声密度类型,必须将输出阵列的平均值除以某个值,然后取平方根,以得到一个对整个感兴趣光谱有效的“噪声密度”数字。对于您展示的示例,我作弊并直接计算噪声密度ND为2.0/sqrt(500 Hz)=0.08944 V/sqrt(Hz)。因此,0.08944*sqrt(500)=2.0。但这是作弊,因为我知道我想要的答案,所以我不确定如何从PSD数组(基本上是RMS^2乘以某个因子)到达那里。如果这有意义,你能解释一下吗?非常感谢你的精彩帖子。

    答复
  4. 先生,
    当我给出cov(A)时,其中A是randn(m,n),它应该是一个对角矩阵,但它没有发生。你能解释一下为什么吗?

    答复
    • 如果你想测试白噪声序列的协方差,你需要对噪声过程进行两次实现并找到协方差矩阵。

      A1=兰登(110000);%零均值、单位方差白噪声过程的实现
      A2=兰特(110000);%零均值、单位方差白噪声过程的实现

      覆盖(A1、A2)

      安=
      0.9909 , 0.0045
      -0.0045 , 0.9999

      随着序列长度的进一步增加,对角线元素将近似于一。这表明基本过程的方差接近于统一

      等价地,这两个单独的实现可以填充为同一变量的两个单独列
      A=兰登(1000,2);%每列中有两个单独的实现
      覆盖(A)
      安=
      0.9902 , -0.0233
      -0.0233 , 1.0857

      将其扩展到三种实现
      A=兰登(1000,3)
      覆盖(A)
      安=
      0.9841 , 0.0000 , -0.0455
      0.0000、0.9933、0.0523
      -0.0455 , 0.0523 , 0.9862

      答复
  5. @幽默:你能告诉我如何绘制功率谱密度条形图吗?使用FFT给出PSD线图。在我的问题中,我必须计算带宽为.25Hz的0到9Hz信号的PSD,然后绘制其条形图。如果您能为我提供同样的matlab代码,我将不胜感激。谢谢。

    答复
  6. 您好,先生,有没有任何书籍或在线材料关注高斯白噪声加入时样本统计特性的变化,例如白噪声具有加权单位协方差矩阵,但当它加入数据时,如果现在我们发现畸变数据的协方差矩阵应该采取什么形式

    答复
  7. 您好,先生,这本书有OFDM接收机的实现吗?我主要需要参考包检测码、互相关码和载波频率输出码。谢谢!

    答复
    • 它只有OFDM发射机和接收机的概念级实现(循环前缀、FFT/IFFT、并行-串行和串-并行转换器)。数据包检测/互相关/载波频率的代码不可用。然而,互相关概念的模拟在另一章中应用,该章涉及扩频

      答复
  8. 你好,
    这本书有更多关于生成白噪声和随机行走过程的代码吗?我有兴趣在matlab中模拟惯性测量装置的误差。这本书对我有用吗?

    答复
  9. 嘿,你有办法用Matlab把数字信号转换成比特吗??请详细说明如何做到这一点??????

    答复
  10. 在给定的链路中,他获取三个有噪声的传感器数据,并使用卡尔曼估计三个可用数据的最佳值

    答复
  11. 尊敬的先生:,
    你对统计的R语言有什么想法吗。我有一些疑问,我可以问你吗,先生

    答复
  12. 我试图在matlab中找到两个信号之间的时间延迟。这两个信号加上高斯白噪声。当我找到协方差矩阵时。cov矩阵的det在延迟点总是零。我使用了基于联合熵的时延估计,在延迟点给了我无穷大的值。如何从中得到有限值

    答复
    • 当相关性为零时,这意味着信号之间不存在相关性。
      为了使时延估计有效,信号的移位版本之间存在一些显著的相关性。

      检查信号中添加的噪声是否太严重。在这种情况下,相关性可能在延迟点处变为零(除零滞后外,在所有时间滞后处,噪声与噪声的自相关均为零)。

      尝试使用内置Matlab函数–“D=finddelay(X,Y)”获取合理的值

      答复

发表您的宝贵意见!!!