I am new to digital signal processing. I have the following sensor sample data
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
Which means at time 0
I have the value 0.30865225195884705
and at time 60
I have the value 0.14355185627937317
and so on.
Data is taken from the sensor at each 10 milliseconds
. So, I assume sampling rate should be set to 100 Hz
.
I want to calculate the total energy of the time domain signal.
I read that it can be calculated using Parseval's theorem as following:
where X[k]
is the DFT
of x[n]
, both of length N
.
Any suggestion, how can I calculate the total energy using MATLAB?
Parseval's theorem is useful in linking the time domain energy to the frequency domain. However, if you do not need to perform other computations in the frequency domain, you can compute the energy directly in the time domain with:
Energy = sum(abs(x).^2)
If on the other hand, you need to convert the signal to the frequency domain for other reasons, you may also compute the energy with (as per Parseval's theorem):
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
Parseval's theorem and DFT analysis only apply to band-limited data sampled with regular equal spacings (constant sample rate above Fmax*2). Since your time stamps are not regularly spaced, you will need to use them to interpolate a vector of new evenly spaced samples before you can calculate the energy using Parseval's equation. Or you will have to do a numerical integration instead of a simple summation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With