Total energy in Time and Frequency Dimain
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Maria Amr
am 12 Dez. 2020
Bearbeitet: Paul
am 10 Nov. 2024
I truly appreciated if somebody can direct me how to measure total energy in a certain frequency band?
I have a signal and use this code to measure total enery and the result is reasonable.
E1_timedomain=sum(abs(x.^2))
but it measuers total energy of whole signal. I just want to measure it between [0-100] Hz. Appreciared!
0 Kommentare
Akzeptierte Antwort
Star Strider
am 12 Dez. 2020
If you have R2018a or later, and the Signal Processing Toolbox, use the bandpass function to selectively filter the frequencies-of-interest. Then do whatever calculations you want to do on the output. If you have an earlier version, it is easy to design filters in MATLAB. I will help you with that, if necessary.
2 Kommentare
Weitere Antworten (3)
Maria Amr
am 14 Dez. 2020
1 Kommentar
Star Strider
am 14 Dez. 2020
You need to use an output:
filtered_signal = bandpass(amp1,[1 78],fs);
Maria Amr
am 14 Dez. 2020
1 Kommentar
Star Strider
am 14 Dez. 2020
As always, my pleaure!
(Also, in the future please post comments as Comments, not Answers.)
Paul
am 10 Nov. 2024
Bearbeitet: Paul
am 10 Nov. 2024
Define a real-valued, finite duration signal of length N, assumed to be uniformly spaced samples collected as Fs = 2000 Hz
rng(100);
N = 1000;
x = randn(1,N); Fs = 2000; Ts = 1/Fs;
The total energy in this signal is computed in the time domain as
E = sum(abs(x).^2)
The total energy computed in the frequency domain is (taking advantage of the symmetry in the frequency domain because x is real-valued)
X = @(f) freqz(x,1,f,Fs);
E = 2*integral(@(f) abs(X(f)).^2,0,Fs/2)*Ts
Hence, the energy in the signal between 0-100 Hz is
E100 = 2*integral(@(f) abs(X(f)).^2,0,100)*Ts
Can also approximate E100 from the DFT samples.
Xdft = fft(x);
fdft = (0:N-1)/N*Fs;
E100 = 2*sum(abs(Xdft(fdft<=100)).^2)/N
Or better yet
E100 = 2*trapz(fdft(fdft<=100),abs(Xdft(fdft<=100)).^2)/Fs
Can also apply a very sharp, low pass filter to x and then compute the energy in the filter output as a rough approximation
y = lowpass(x,100,Fs,'Steepness',0.95);
sum(abs(y).^2)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Spectral Measurements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!