Subtract the average time value by a signal

15 次查看(过去 30 天)
Hello everyone, I performed a FFT of an accelerometric signal and I found a peak at 0 Hz in the abs of the FFT. In order to remove this nonsense I have to create the temporal average of the original signal (integral of the signal over time, divided by the time) and then I have to subtract it from the original signal. How can I perform this task? Thamk you very much.

采纳的回答

Walter Roberson
Walter Roberson 2016-7-11
Why not just zero that component of the fft? You will get the same result.
To get 0 in the 0 Hz bin, you should not be performing a temporal average in the manner you indicate. Instead for a single channel signal you should use
new_signal = signal - mean(signal);
This will differ from trapz(signal)/length(signal) by the weighting given to the first and last datapoint. To clarify, mathematically, the first bin output by fft() is the unweighted sum of the signal.
  2 个评论
Guglielmo Giambartolomei
Thank you Walter. Some clarification if possible: so I have to subtract the mean signale from the original signal (the simple mean)? I didn't understand your assertion "This will differ from trapz(signal)/length(signal) by the weighting given to the first and last datapoint". Thank You!
Walter Roberson
Walter Roberson 2016-7-11
trapz(signal) = 1/4 * (2 * signal(1) + 4 * signal(2:end-1) + 2 * signal(end) ) = sum(signal(2:end-1)) + 1/2 * (signal(1) + signal(end)) = sum(signal) - 1/2 (signal(1) + signal(end))
So trapz(signal) is sum(signal) except with the first and last signals given half weight.
I mention trapz(signal) because it is one of the most common numeric integration techniques.
Yes, to have the first bin of fft(signal) come out as 0, use
fft_of_signal = fft(signal - mean(signal));
To within round-off error, this will be exactly the same as
fft_of_signal = fft(signal);
fft_of_signal(1) = 0;

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by