模拟具有特定时间特征的噪声

时间:2019-05-18 02:50:20

标签: python matlab noise

我正在尝试为时域信号生成合成数据。假设我的信号是方波,并且在它上面还有一些随机噪声。我将噪声建模为高斯模型。如果我将数据生成为长度为N的向量,然后向其中添加从均值0和宽度1的正态分布采样的随机噪声,则可以粗略地模拟我关心的情况。但是,这会增加具有由采样率设置的特征时间标度的噪声。我不希望这样,因为实际上噪声具有更长的时间尺度。产生具有特定带宽的噪声的有效方法是什么?

我尝试在每个采样点生成噪声,然后使用FFT来切除高于某个值的频率。但是,这会严重衰减信号。

我的想法基本上是:

noise = normrnd(0,1);
f = fft(noise);
f(1000:end) = 0;
noise = ifft(f);

这种方法可以使信号严重衰减。

1 个答案:

答案 0 :(得分:0)

仅产生白噪声并对其进行过滤是很常见的。通常会使用IIR,因为它很便宜并且噪声相位总是随机的。它确实会衰减信号,但无需花费任何放大信号。

您还可以直接使用IFFT产生噪声。在该示例中,您给fft(noise)输出的每个系数都是一个高斯分布的随机变量,因此,您可以将那些不需要的系数置为FFT,然后将不需要的系数清零,而无需设置FFT您需要和IFFT来获得结果信号。请记住,系数是复杂的,但是实部和虚部都是独立于高斯分布的。