在一些论文中,我读到加性噪声是带限高斯白。
如何使用MATLAB模拟这种类型的噪声?

评论

在连续时间系统中,带宽受限的白噪声(无论是否为高斯)的概念都得到了明确定义和充分理解。对于离散时间系统,问题更加复杂,您需要考虑什么是频带限制以及如何将其与奈奎斯特频率进行比较。

@DilipSarwate:对我来说,“带限白噪声”是一种矛盾! :-)

@PeterK。带限白噪声的概念主要用于带通系统中,在这种系统中,通带外的噪声特性无关紧要,而通带内的噪声与通过理想的带通滤波器(通过的频带正好通过)的白噪声没有区别。是通带。它不仅仅是白噪声(没有任何关于频带限制的贬义评论),是一种矛盾的情绪。另请参阅,在Jason R的回答(我不同意)之后,DRazick的评论(在现场)。

@DilipSarwate:感谢您的解释。我明白了,但我仍然认为这是一个非常差的术语选择。对我来说,“带通滤波的白噪声”更为准确,但我想它最终会出现在同一位置。

@PeterK。不幸的是,“带通滤波的白噪声”通常表示JasonR的答案中描述的过程。从白噪声开始,然后通过具有传递函数$ H(f)$的滤波器对其进行滤波,以得到一个与$ | H(f)| ^ 2 $成比例的PSD过程。带限白噪声相同,只是我们坚持认为$ H(f)$必须是理想带通滤波器的传递函数。白噪声的关键在于,只要限制我们的信号在频带内,我们就不能将信号放在适用于带限白噪声的噪声位置。

#1 楼

首先会产生白噪声,然后将其过滤到所需的带宽,从而产生带限高斯噪声。例如:

% design FIR filter to filter noise to half of Nyquist rate
b = fir1(64, 0.5);
% generate Gaussian (normally-distributed) white noise
n = randn(1e4, 1);
% apply to filter to yield bandlimited noise
nb = filter(b,1,n);


评论


$ \ begingroup $
我一直想知道这一点,但是如果完成了这样的事情,那么高斯又怎么了?我不认为PDF完全没有。
$ \ endgroup $
–太空
13年6月20日在2:04

$ \ begingroup $
高斯随机变量的特点之一是两个独立的高斯RV的和也是高斯分布的。由于输入噪声是白色的,因此您可以将滤波器输出处的每个样本视为许多独立的高斯随机变量的总和(其中每个RV的方差取决于输入噪声方差和相应滤波器抽头的值)。因此,滤波器输出处的样本也是高斯分布的。但是,噪声显然不再是白色的,因为在滤波器输出的连续采样之间存在相关性。
$ \ endgroup $
–Jason R
13年6月20日在4:05

$ \ begingroup $
Wikipedia对该属性进行了更详细的描述。请注意,即使输入噪声是彩色的,该属性仍然保持不变(请参见“相关随机变量”部分)。
$ \ endgroup $
–Jason R
2013年6月20日4:06



$ \ begingroup $
facepalm。当然。
$ \ endgroup $
–太空
2013年6月20日15:20

$ \ begingroup $
但是这种方法不会产生白噪声。无需应用滤波器,每个离散采样噪声的带宽都从一开始就受到限制。
$ \ endgroup $
–罗伊
2013年6月21日15:02



#2 楼

就像对杰森的回答的一小部分补充:通常,您需要生成具有给定方差$ \ sigma ^ 2 $的带限噪声。您可以将此代码添加到Jason答案中给出的代码中:

var = 3.0;  % just an example  
scale = sqrt(var)/std(nb);
nb = scale*nb;  % nb has variance 'var'


请注意,您必须在滤波后进行缩放,因为通常,滤波器会更改噪声方差。

评论


$ \ begingroup $
好点。如果按比例调整滤波器系数,使$ \ sum_ {n = 0} ^ {N} | h [n] | ^ 2 = 1 $,则滤波器将不会影响噪声方差。
$ \ endgroup $
–Jason R
2013年6月20日14:39

$ \ begingroup $
@Matt不错!
$ \ endgroup $
–太空
2013年6月20日15:13

#3 楼

每次生成离散噪声样本(例如,使用MATLAB的randn / rand)时,实际上都会生成一个带限噪声。

您要做的就是将离散样本的方差调整为方差这些样本据称是从“连续”噪声中提取的。

给出一个具有方差$ \ sigma ^ {2} _ {cn} \ delta(t)$和您想以$ f_ {s} $的速率对其进行采样,则应生成方差为$ f_ {s} \ sigma ^ {2} _ {cn} $的离散噪声采样。

此结果是有效假设假设在采样连续噪声之前,您应用了带宽为$ f_ {s} / 2 $的理想LPF滤波器。

此处给出了完整的说明-如何模拟AWGN(加性高斯白噪声)特定带宽的通信系统。

评论


$ \ begingroup $
这里的更多信息:dsp.stackexchange.com/questions/17494/…
$ \ endgroup $
–罗伊
2014年7月27日在2:40

#4 楼

为什么不能使用本文中提到的方法?

它从所需的频率开始,然后向后工作以构建信号,而不是进行滤波。它使用python代码,还链接到原始的Matlab代码。

这样做有什么弊端吗?

评论


$ \ begingroup $
查看原始的matlab代码,它适用于n的块大小(即fft长度)。如果我想要2n个样本,则可以将fft长度加倍,这比2 fft还要多。如果您执行2个单独的块,则从第一个块到第二个块将有不连续的过渡。您可以使用一个窗口来平滑过渡,但是您需要做2个以上的块,以避免扇形化时间序列。使用过滤器方法,一旦过滤器处于稳定状态,就可以根据需要输入随机数。过滤方法的处理量增加呈线性比例。
$ \ endgroup $
–user28715
19-09-23在18:11

#5 楼

我意识到此问题在当前视图中突然出现,因为@Drazick修改了他/她的2013年答案。

如果您生成一个很好的统一p.d.f。伪随机数$ x $(例如,使用rand()frand(),如果它是一个很好的版本),其范围是0到1(即$ 0 \ le x <1 $),那么如果执行12次,则将所有12加起来假定的独立和不相关的值,然后从该和中减去6.0,您将获得非常接近单位方差和零均值高斯随机数的值。如果统一p.d.f.伪随机数是“好的”(即它们表现出彼此独立性),总和将为“白色”,因为您可以获得离散时间信号。

”白噪声即使对于模拟信号,“”当然也是误称。一直到平坦无穷大的“功率信号”也具有无限的功率。如上所述生成的虚拟高斯和“白”信号具有有限的功效(方差为1)和有限的带宽(单面表示为奈奎斯特)。 (因此,“功率谱密度”或每单位频率的功率为1 /奈奎斯特。)对其进行缩放并进行补偿即可。

我想稍后再进行编辑并添加一些C-像伪代码一样可以明确显示这一点。

#6 楼

产生全光谱白噪声然后对其进行过滤,就像要将房子的墙壁涂成白色一样,因此您决定将整个房子涂成白色,然后将除墙壁以外的所有房屋重新涂成白色。是白痴。 (但是在电子学上有意义)。

我编写了一个小型C程序,该程序可以在任何频率和任何带宽(假设中心频率为16kHz,“宽”为2kHz)下产生白噪声。不做任何滤波。

我做的很简单:
在主(无限)环路内,我在中心频率+/-上产生一个正弦波,+ /-介于-半带宽和+半带宽之间,然后我将该频率保留为任意数量的样本(粒度),结果如下:

中心频率为16kHz时2kHz宽的白噪声

< br伪代码:

while (true)
{

    f = center frequency
    r = random number between -half of bandwidth and + half of bandwidth

<secondary loop (for managing "granularity")>

    for x = 0 to 8 (or 16 or 32....)

    {

        [generate sine Nth value at frequency f+r]

        output = generated Nth value
    }


}


评论


$ \ begingroup $
STFT在整个频段上都不平坦。您尚未显示为什么您的技术有任何优势。顺便说一句,大多数涂料都是灰白色,然后与颜料混合。橙色涂料不是仅使用橙色成分制成的。产生白噪声没有任何额外的工作。
$ \ endgroup $
–user28715
19-09-22在12:59

$ \ begingroup $
@StanleyPawlukiewicz在电子领域,您非常严厉,因为噪声发生器和滤波器是两个非常简单的“对象”。在编程中,过滤器在指令数量上的复杂性不仅仅是生成所需的数据。因此,如果您有时间紧迫的应用程序,那么编程是更可取的方法。如果您投票否决,我建议您再考虑一下。
$ \ endgroup $
– Zibri
19-09-23在6:21

$ \ begingroup $
你的声音不好听。整个频段的频谱都不平坦。动态调用先验函数并不比过滤快。你的论点没有根据
$ \ endgroup $
–user28715
19-09-23在11:37

$ \ begingroup $
实际上,带内波纹是设计参数。说他们在中心频率达到峰值也是错误的
$ \ endgroup $
–user28715
19-09-24在12:32

$ \ begingroup $
因为您的技术很容易修改,所以为什么不编写自己的正弦波例程而不是链接到一个例程并声称您的代码不太复杂,然后将其与biquad进行比较。添加时,定点版本如何。您可能还会考虑随着样本数量的增加,技术将如何扩展
$ \ endgroup $
–user28715
19-09-24在13:43