Amplitude-Frequency response peaks at zero, how to fix?

9 Ansichten (letzte 30 Tage)
Chinwe Orie
Chinwe Orie am 9 Jul. 2018
Kommentiert: Star Strider am 10 Jul. 2018
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 on
plot(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 on
plot(freq,ones(floor(length(signal)/2+1),1), 'LineWidth', 2)
xlabel('Hz')
ylabel('Amplitude')
xlim([0 200])
ylim([0 0.02])
hold off

Akzeptierte Antwort

Star Strider
Star Strider am 9 Jul. 2018
The peak at 0 Hz is the direct-current (d-c) or constant offset. You can eliminate it by subtracting the mean of the signal before taking the Fourier transform.
xdft = fft(signal - mean(signal));
  12 Kommentare
Chinwe Orie
Chinwe Orie am 10 Jul. 2018
Ah yes, that's true. But doesn't it do the plot using normalized frequency? Is there a way to convert normalized to the regular frequency scale?
Star Strider
Star Strider am 10 Jul. 2018
The only ‘normalized frequency’ I’m aware of uses a scale from 0 to pi. The frequency otherwise goes from 0 to the Nyquist frequency (half the sampling frequency).

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by