如何生成幂律/粉红噪声信号?

信息处理 随机过程 概率分布函数 幂律
2022-02-18 09:21:09

假设我需要生成一个时间序列,其中每次间隔大约为 120 秒,但变化很小(例如 125、130、119、118、121、129 等)

我希望这种变化不是随机的,而是遵循幂律分布,所以会有一些,但数量很大的大变化,其中大部分会很小(+-2-3 秒)。

您知道 Javascript 中是否有可以执行此操作的算法?或者至少将我引导到某种可以生成这种分布的函数,该分布总是围绕某个数字(例如,在我的情况下为 120)?

谢谢!

1个回答

您可以通过生成零均值粉红噪声信号来做到这一点p[n]然后只是规模偏差它,即你的间隔将是

x[n]=120+kp[n]

在哪里k控制间隔将在 120 左右摆动多远。

粉红噪声可以通过过滤白噪声或通过直接在频域中创建幅度谱、添加随机相位并执行逆 FFT 来生成。有关过滤示例,请参阅https://ccrma.stanford.edu/~jos/sasp/Example_Synthesis_1_F_Noise.html

在实践中,大多数粉红噪声信号仅在下限频率下呈粉红,否则在极低频率下理论上无限的能量变得笨拙。