白噪声:Matlab仿真分析

定义

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

功率谱密度

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

高斯和均匀白噪声:

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

高斯噪声和均匀噪声是系统建模中常用的两种噪声。在建模/仿真中,可以使用适当的随机发生器生成白噪声。白高斯噪声可以用兰登函数,它生成服从高斯分布的随机数。同样,兰特在Matlab中,函数可以用来产生均匀分布的白噪声。当使用随机数生成器时,它从给定的分布中生成一系列随机数。让我们以生成长度为10的白高斯噪声为例,使用兰登函数-平均值为零,标准偏差为1。

>>μ=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)和广义平稳过程,我们可以得到白噪声即SSS和白噪声WSS。相应地,它们可以被称为严格地定义白噪声信号虚弱的定义白噪声信号.

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

白噪声信号,用x(吨),是在弱意义下定义的一个比较实际的条件。在这里,样本是统计上不相关和相同分布的一些方差等于\西格玛^2。此条件通过使用协方差函数指定为

白噪声协方差函数

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

对于多元随机变量,协方差函数指定n给定随机过程中的变量相互作用。协方差函数将方差的概念推广到多维。

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

多元噪声协方差矩阵

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

白噪声自相关函数

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

频域特性:

维纳·金奇纳定理声明广义平稳过程功率谱密度函数S{xx}(f)一个随机过程的自相关函数可以通过傅里叶变换得到该随机过程。在连续时域中,这表示为

维纳-钦钦定理方程

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

白噪声的Wiener-Khinchin定理方程
维纳-钦钦定理
图1:Weiner-Khintchine定理说明

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

产生长度为高斯白噪声的信号L=100000使用Matlab中的randn函数并绘制它。假设pdf是一个具有平均值的高斯pdf\μ=0和标准差\西格玛=2因此,高斯pdf的方差为\西格玛^2=4高斯随机变量的理论PDF由

高斯随机变量PDF方程

更多的模拟技术可以在下面的电子书中找到
用Matlab实现数字调制
使用Python实现数字调制
Matlab中的无线通信系统

全部清除;clc公司;全部关闭;L=100000;%随机信号的采样长度μ=0;西格玛=2;X=西格玛*randn(L,1)+μ;图();子批次(2,1,1)图(X);标题(['白噪声:\mu_x=',num2str(mu),'\sigma^2=',num2str(sigma^2)])xlabel('样本')ylabel('示例值')电网接通;
白噪声的Matlab仿真
图2:模拟噪声样本

绘制直方图并根据高斯随机变量的理论概率密度分布图验证直方图。

如果你倾向于用Python编程,到这里了解如何使用Matplotlib包绘制直方图.

子批次(2,1,2)n=100;%历史程序库数[f,x]=历史(x,n);巴(x,f/trapz(x,f));坚持住;%高斯随机变量的理论PDFg=(1/(sqrt(2*pi)*西格玛))*exp(((x-mu)。^2)/(2*sigma^2));绘图(x,g);拖延;电网接通;title('理论PDF和模拟高斯白噪声直方图');图例(‘柱状图’,‘理论PDF’);xlabel('bin');ylabel('PDF f_x(x)';
用Matlab绘制白噪声直方图
图3:高斯RV的模拟和理论PDF图

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

图();Rxx=1/L*conv(flipud(X),X);滞后=(-L+1):1:(L-1);%替代方法%[Rxx,lags]=xcorr(X,'偏置');%参数“biased”用于正确缩放1/L%规范化样本长度的自相关,以实现适当的缩放绘图(lags,Rxx);title('白噪声自相关函数');xlabel('滞后')ylabel('相关性')电网接通;
Matlab中白噪声的自相关分析
图4:产生噪声的自相关函数

模拟PSD:

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

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

为了验证白噪声的功率谱密度,我们将使用将噪声视为N高斯随机变量。我们要平均PSD我这样的认识。既然有N高斯随机变量(N每个实现的协方差矩阵C{xx}将具有尺寸N \次N。这个多变量情况下的平均向量将是维数1倍N.

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

%高斯白噪声过程中恒定PSD的验证%具有任意均值和标准差西格玛μ=0;%每个噪声过程实现的平均值西格玛=2;%西格玛每一个实现噪声的过程L=1000;%平均随机信号实现数N=1024;%每个实现的采样长度设置为FFT的2次幂%产生随机过程-高斯白噪声过程MU=MU*1(1,N);%所有实现的平均向量Cxx=(西格玛^2)*诊断(1(N,1));%随机过程的协方差矩阵R=chol(Cxx);%协方差矩阵的Cholesky%用给定的平均向量生成多元高斯分布%协方差矩阵Cxxz=repmat(MU,L,1)+randn(L,N)*R;

计算上述生成的多维过程的PSD,并将其平均,得到平滑的图形。

%默认情况下,FFT在每列上执行—正常命令FFT(z)%求每行多元分布的FFT%命令-fft(z,[],2)Z=1/sqrt(N)*fft(Z,[],2);%sqrt定标(N);Pzavg=平均值(Z.*conj(Z));%从fft计算平均功率normFreq=[-N/2:N/2-1]/N;Pzavg=fftshift(Pzavg);%将零频率分量移到频谱中心绘图(normFreq,10*log10(Pzavg),'r');轴([-0.5 0.5 0 10]);电网接通;ylabel('功率谱密度(dB/Hz)';xlabel('归一化频率');title('白噪声功率谱密度');
Matlab中白噪声的PSD功率谱密度
图5:产生噪声的功率谱密度

产生噪声的PSD图在所有频率下显示几乎固定的功率。换句话说,对于白噪声信号,PSD在所有频率上是恒定的(平坦的)(-\infty公司+\infty公司 ). 上图中y轴的单位为dB/Hz。从图中我们可以看出,恒功率=10log10(σ2)=10log10(4)=6分贝。

应用

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

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

参考文献:

[1]随机信号分析与卡尔曼滤波导论。约翰·威利和儿子,1983年.
[2]Athanasios Papoulis,《概率,随机变量和随机过程》,第3版,WCB/McGraw-Hill,1991年.

作者的书

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

注:这篇文章中有一个评分,请访问此帖子进行评分。
$9.99–加入购物车
使用Python实现数字调制
使用Python实现数字调制
(PDF电子书)

注:这篇文章中有一个评分,请访问此帖子进行评分。
$9.99–加入购物车
数字调制使用matlab书皮
用Matlab实现数字调制
(PDF电子书)

注:这篇文章中有一个评分,请访问此帖子进行评分。
$9.99–加入购物车
精选最佳通信工程书籍
最佳信号处理书籍

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

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

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

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

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

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

      cov(A1,A2)

      答案=
      0.9909,0.0045
      -0.0045,0.9999

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

      等效地,这两个独立的实现可以被填充为具有相同变量的两个独立列
      A=兰登(1000,2);%每列中有两个独立的实现
      cov(A)
      答案=
      0.9902,-0.0233
      -0.0233,1.0857

      扩展到三个实现
      A=兰登(1000,3)
      cov(A)
      答案=
      0.9841,0.0000,-0.0455
      0.0000、0.9933、0.0523
      -0.0455、0.0523、0.9862

      答复
  4. @你能告诉我怎样绘制功率谱密度条形图吗?利用FFT给出PSD线图。在我的问题中,我必须计算一个0到9Hz带宽为.25Hz的信号的PSD,然后绘制出它的条形图。如果你能为我提供同样的matlab代码,我将非常感激。谢谢。

    答复
  5. 您好,先生,有没有书或网上的资料,重点是当加上高斯白噪声时,样本的统计性质如何变化,例如白噪声有加权的恒等协方差矩阵,但当它被加到数据中时,如果我们现在发现失真数据的协方差矩阵,它应该采取什么形式

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

    答复
    • 它只有一个概念层面(循环前缀、FFT/IFFT、并串串并转换器)的OFDM收发实现。包检测/互相关/载波频率的代码不可用。然而,互相关概念的模拟应用于另一章关于扩频

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

    答复
  8. 嘿,你有没有办法用Matlab把数字信号(解调)转换成比特??如果可以请您详细说明一下如何做??????

    答复
  9. 在给定的链路中,他取三个有噪声的传感器数据,用kalman从三个可用的数据中估计出最佳值

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

    答复
    • 当相关系数为零时,表示信号之间不存在相关性。
      为了使时延估计工作,信号的移位版本之间存在一些显著的相关性。

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

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

      答复

发表你的宝贵意见!!!