为什么我没有得到正确的 PSD

信息处理 过滤器 噪音 转换功能
2022-01-30 03:29:11

我需要用给定的 PSD 对噪声进行建模。为此,我从高斯白噪声 (WGN) 开始,并为 WGN 提供一个传递函数,它的作用就像一个滤波器。事实上,很容易证明,如果选择白噪声的 PSD 等于1unit2/Hz,那么输出是H(f)×1. 因此

PSD=|H(f)|2

传递函数中的增益作用正常,向上或向下平移 PSD。问题在于零点和极点。无论我如何创建传递函数(一阶、二阶或更高阶),PSD 在感兴趣区域中都是平坦的frange=[106,10]Hz

传递函数为

H=1011(s+2×103)2(s+109)2;

在 PSD = 1(选择样本和功率)的情况下,很容易在 Simulink 中构建带限白噪声。

在此处输入图像描述

然后用这个在matlab中评估TF的输出

%% PSD estimation
for i =[1e-8 1e-7 1e-6 1e-5, 1e-4, 1e-3, 1e-2 1e-1 1]
    f_range = linspace(i,i*10,1000);

    [pxx_white] = pwelch(white,[],[],f_range);

    [pxx_color] = pwelch(color,[],[],f_range);


    loglog(f_range,sqrt(pxx_white./(2*pi)),'k')
    hold on
    loglog(f_range,sqrt(pxx_color./(2*pi)),'r')

end

xlabel('Frequency (Hz)')
ylabel('RPSD (unit/Hz^(1/2))')
legend('white','color')
grid on

现在我的问题是:我在理论上做错了吗?也许由于模拟时间我无法在低频区域达到 PSD?我模拟了 10000 秒(1e-4 赫兹)。

黑色:白噪声 PSD,红色:平坦的有色噪声 PSD,曲线是 tf 的图。

1个回答

既然你说你希望频率范围从 1μ从 Hz 到 10 Hz,我以 20 Hz 的采样频率运行了我的模拟,并做了 100 个 32k FFT PSD。我的结果看起来像你所拥有的。所以我将采样频率降低到 0.2 Hz。模拟人生开始于 0 秒,结束于 163835 秒,其中Δt = 5 秒。WGN 只是普通的单位。我的结果如下所示:

传递函数测试

希望这可以帮助。