# FFT plot not matching the output wave

I had implemented a $4^{\rm th}$ order Chebyshev I Band Pass IIR Digital Filter in Simulink to separate out $148\textrm{ Hz}$ frequency from the sum of the following waves.

Input Waves

$$\begin{array}{|c|c|c|c|c|}\hline \text{Amplitude} & \text{Bias} & \text{Frequency} & \text{Phase}& \text{Sampling Rate} \\ \hline 14 & 0 & 1\textrm{ Hz} & 0 & 1000\textrm{ Hz}\\ 15 & 0 & 148\textrm{ Hz} & 0 & 1000\textrm{ Hz}\\ 12 & 0 & 50\textrm{ Hz} & 0 & 1000\textrm{ Hz}\\ 10 & 0 & 150\textrm{ Hz} & 0 & 1000\textrm{ Hz}\\ 13 & 0 & 100\textrm{ Hz} & 0 & 1000\textrm{ Hz}\\ \hline \end{array}$$

This is the input FFT. The FFT's seems to indicate that the filter is doing its job but the output wave has a low frequency component (as seen on scope) which is not reflected in the FFT.

This is the output wave and FFT

function l = fft_plot(x,Fs)
x=x.data;
l=size(x,1)-1;
y=fft(x);
p2 = abs(y/l);
p1 = p2(1:l/2+1);
p1(2:end-1) = 2*p1(2:end-1);
f=Fs*(0:(l/2))/l;
plot(f,p1);
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|');
l;


This is the function I use to plot the the frequencies.

Can someone help me identify the source of this discrepancy?

• Please include a question. – Juancho Jun 2 '17 at 14:49
• I've included the question in the edit. – Ritik Madan Jun 5 '17 at 4:54