I made an amplitude-frequency response curve but I have a peak at 0 Hz. I'm not sure why but I know for sure that this is definitely wrong. The peak should be around 125 Hz. How do I get rid of the zero peak? I have attached the code and the excel data file. Thanks!
f = xlsread(e);%plotting the signal
t = f(:,1);X1 = f(:,2);data_d = detrend(X1,1);subplot(2,1,1)plot(t,X1);hold onplot(t,data_d, 'g')hold off%Some of the envelope code was not working properly because MATLAB read
%some lines of the excel file as infinite numbers. The envelope function
%does not take infinite numbers.
%Thus, the below code deletes the infinite numbers from the array. There
%are only 2 of them.
fin = isfinite(X1);t = t(fin);signal = X1(fin);Fs = 5000;%Since the signal is real-valued, we use only the positive frequencies from
%the DFT to estimate the amplitude. Scale the DFT by the length of the
%input signal and multiply all frequencies excep 0 and the Nyquist by 2.
xdft = fft(signal);xdft = xdft(1:floor(length(signal)/2+1));xdft = xdft/length(signal);xdft(2:end-1) = 2*xdft(2:end-1);freq = 0:Fs/length(signal):Fs/2;subplot(2,1,2)plot(freq,abs(xdft))hold onplot(freq,ones(floor(length(signal)/2+1),1), 'LineWidth', 2)xlabel('Hz')ylabel('Amplitude')xlim([0 200])ylim([0 0.02])hold off
Best Answer