【发布时间】:2021-08-27 17:02:03
【问题描述】:
对于一个有点笨拙的问题,我很抱歉,但我真的陷入了从给定的 PSD 或 ASD 中找到幅度谱函数的简单但并非微不足道的问题。
最后我想要的是:时间序列域中的信号。
我已经阅读了很多论坛页面,并且我知道这里应该发生 ifft 以便从频域切换到时域(例如例如,这里提出了一个很好的算法:https://www.researchgate.net/post/How-do-I-generate-time-series-data-from-given-PSD-of-random-vibration-input)
问题是我在时域中也已经有了一个信号(从其他软件获得),所以我可以检查我的 ifft 是否工作正常。
综上所述,如果一切正常,输出时间序列信号的 ASD 和 PSD 应该与输入 ASD 和 PSD 重合:
我的问题是我无法正确计算频域 U(f) 中的幅度谱,以便在 ifft 过程中进一步使用它:
在青色曲线下方的图表中,U(f) 应该是 U(f),而灰色曲线是我所拥有的。因此输出的 ASD 和 PSD 与输入的不一致(下图右)
您能否告诉我,我应该使用哪种转换来从输入 ASD(或 PSD)到正确的 U(f)?
这是初始函数的方程:
y = (1e-12 * sqrt( (1e-3./f).^4 ./ ((1e-5./f).^4+1) + 1 + (f/1e-1).^4)).^2;
acc_freq_asd = abs(sqrt(y)); %convert to ASD
acc_freq_psd = abs(y); %convert to PSD
绘制的 U(f)“灰色曲线”通过以下公式获得:
U_f = sqrt(2*acc_freq_psd.*tslength);
其中tslength - 是信号长度
但我也使用了更多的组合(使用规范化等),但它们都没有给出正确的 U(f)。
非常感谢您的帮助!
【问题讨论】:
标签: matlab signals fft noise spectral-density