我是数字信号处理的新手。我有以下传感器样本数据
Time(milliseconds) data
------------------ -------------------
0 0.30865225195884705
60 0.14355185627937317
100 -0.16846869885921478
156 -0.2458019256591797
198 -0.19664153456687927
258 0.27148059010505676
305 -0.16949564218521118
350 -0.227480947971344
397 0.23532353341579437
458 0.20740140974521637
这意味着在时间0
时我的值为0.30865225195884705
且时间为60
我的值为0.14355185627937317
,依此类推。
每个10 milliseconds
的传感器都会获取数据。因此,我假设采样率应设置为100 Hz
。
我想计算时域信号的总能量。
我读到它可以使用Parseval定理计算如下:
其中X[k]
是DFT
的{{1}},长度均为x[n]
。
有任何建议,如何使用MATLAB计算总能量?
答案 0 :(得分:5)
Parseval定理在将时域能量与频域相关联时非常有用。但是,如果您不需要在频域中执行其他计算,则可以使用以下方法直接在时域中计算能量:
Energy = sum(abs(x).^2)
另一方面,如果出于其他原因需要将信号转换到频域,您也可以使用(根据Parseval定理)计算能量:
Xf = fft(x); % compute the DFT (using the Fast Fourier Transform)
Energy = sum(abs(Xf).^2) / length(Xf); % Get the energy using Parseval's theorem
答案 1 :(得分:2)
Parseval定理和DFT分析仅适用于采用规则等间距采样的带限数据(恒定采样率高于Fmax * 2)。由于时间戳没有规则间隔,因此在使用Parseval方程计算能量之前,您需要使用它们来插入新均匀间隔样本的矢量。或者你必须进行数值积分而不是简单求和。