Matlab的信封rms实现
信息处理
matlab
信封
2022-02-23 08:22:03
1个回答
这是因为envelope
在计算标准偏差之前将信号居中,然后对平均值进行校正。试试这个:
x = randn(50, 1);
xRMS = sqrt(movmean(x.^2, 21));
xRMS_centered = sqrt(movmean((x-mean(x)).^2, 21)) + mean(x);
xRMSref = envelope(x, 21, 'rms');
plot(xRMSref,'x-','DisplayName','xRMSref');hold on;plot(xRMS,'o-','DisplayName','xRMS');plot(xRMS_centered,'s-','DisplayName','xRMS centered');hold off;
legend()
*编辑:因为你问为什么信封会这样:我认为这是因为它试图返回信号的包络。它实际上带有两个输出参数,一个下包络线和一个上包络线,其想法是信号应该介于两者之间。显然,如果这是我们想要的,我们需要考虑均值。请参见下图中的示例:
如果您不居中,则不会相应地捕获平均值周围的局部变化。
其它你可能感兴趣的问题