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?