0

使用频率列表制作粉红噪声(1/f)

我想看看如果我只使用声音中的频率会得到什么类型的噪音。我使用 fft 创建了一个 matlab/octave 数组来获取[频率、幅度、相位]来重现我的人声信号。

我想获取此文件/数据并使用它来创建粉红噪声(1/f)。当然,当我使用 1/f 作为频率时,数字变得非常小,有没有人知道如何使用我自己的声音频率,我在 matlab 中使用 fft 来创建粉红噪声(1/f)。

谢谢

4

2 回答 2

1

如果我是正确的,那么您正在做的是基于 1/f 频率产生噪声。但是,如果您阅读以下文章:httpS ://en.wikipedia.org/wiki/Pink_noise,除了功率谱密度与 成正比 之外,频率是相同的1/f。因此,您不应产生频率为 1/f 的噪声。

我建议阅读此页面以了解必要的算法。

但是,如果您面临的问题是音量太低,请尝试通过将结果乘以一个因子来放大合成噪声:pinkNoise = pinkNoise * 100

于 2013-07-22T19:36:25.983 回答
0

这可能会奏效:根据幅度 A = A(f) 计算频谱中的平均功率,其中 f 是频率。

P = mean(A.^2);

将其传播到您的频率范围:

N = length(f);
invfnorm = 1./[1:N];
Anew = sqrt(P*invfnorm/sum(invfnorm));

Anew 具有与原始光谱具有相同总功率密度的特性,并且功率衰减为 1/f。

用 Anew 替换 A 并对新频谱进行反 FFT 以生成新波形。

于 2013-07-22T20:02:19.390 回答