`envelope`如何在MATLAB中使用滑动窗口来确定RMS?

信息处理 matlab
2022-02-23 16:52:39

我试图了解使用envelopeMATLAB 中的函数计算 RMS(均方根)时滑动窗口的工作原理。我正在使用以下代码来重现以下行为envelope

rng(1);
Array = randn(1000,1);
window = 100;
limit = length(Array)-window;

%Part 2
for i=1:limit
    RMS(i) = rms(Array(i:i+window-1));
end
plot(RMS)
hold

我希望上面代码中的第 2 部分产生与以下相同的结果:

upper = envelope(Array(1:limit), 100, 'rms');
plot(upper)

然而,与第二个选项(红线)相比,第一个选项(蓝线)移动了大约 50 个样本:

在此处输入图像描述

我想了解如何envelope确定第一个样本。

1个回答

由于您的窗口没有居中,您会收到所选窗口的一半长度的偏移。