MATLAB: Removing DC component at 0 HZ from acceleration data after fft

accelerationfftMATLAB and Simulink Student Suitepsd

Hello,
After i compute the FFT of my acceleration data (Fs = 50 Hz) i am getting a large spike at 0 Hz (the leftover DC component). I have tried subtarcting the mean and detrending my data (detrend(X,2)).
Here is my code:
n = length(acc(:,1));
accX_fft = fft(acc(:,1),n);
PSD = accX_fft.*conj(accX_fft)/n;
freq = linspace(0,50,length(accX_fft));
L = 1:floor(n/2);
plot(freq(L),PSD(L));
The amplitudes of the frequecieis i want to visualize are already very very small, so the spike at 0 Hz is really distorting the view.
Id appreciate any reccomendation on how to get rid of this spike.

Best Answer

As described here: http://blog.originlab.com/how-to-remove-dc-offset-before-performing-fft try using a high-pass filter to remove very low frequencies from your signal. See highpass(): https://www.mathworks.com/help/releases/R2020a/signal/ref/highpass.html