我正在尝试在 matlab 中测量随机过程的 PSD,但我不知道该怎么做。我在这里发布了完全相同的问题,但我想我可能在这里有更多的运气。
随机过程描述风速,并由实数向量表示。每个条目对应于空间中某个点的风速,以 m/s 为单位测量。这些点相距 0.0005 m。如何测量和绘制 PSD?我们称之为向量V
。我的第一个想法是使用
[p, w] = pwelch(V);
loglog(w,p);
但这是正确的吗?问题是,我得到了一个解析表达式,PSD 应该(理论上)匹配。通过用这两行代码绘制它,它看起来全错了。具体来说,它看起来好像需要平移和缩放。除此之外,两者的形状相似。
更新:
上面的图像实际上并没有描述通过使用pwelch
单个向量获得的 PSD,而是 200 个向量的 PSD 的平均值,因为这些向量源于数值模拟。正如建议的那样,我尝试按 2*pi/0.0005 进行缩放。我看到您实际上可以将此信息提供给pwelch
. 所以我尝试使用代码
[p, w] = pwelch(V,[],[],[],2*pi/0.0005);
loglog(w,p);
反而。如下所示,它看起来好多了。然而,它仍然不完美。这只是我应该期待的吗?顺便说一句,取平方根不是答案。不过谢谢你的建议。一方面,它应该遵循 Kolmogorov 的 -5/3 定律,它现在确实如此(它遵循绿线,斜率为 -5/3)。我试图与之匹配的函数是 Shkarofsky 谱密度函数,它是 Shkarofsky 相关函数的一维傅里叶变换。不能在网站上标记数学吗?
更新2:
我已经尝试[p, w] = pwelch(V,[],[],[],1/0.0005);
按照我的建议使用。但正如你所见,它仍然不完全匹配。我很难准确地解释我在寻找什么。但我想要(或者,我所期望的)是计算和分析 PSD 的下降同时发生,并以相同的速度下降。数据来自湍流模拟。解析表达式已拟合到湍流的实际测量值,其中也存在这种下降。我根本不是专家,但据我所知,下降发生在较小的长度尺度上,因为由于空气的粘性,能量会消散。