MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by hossein on 8 Jul 2013

I wanna filter a signal by band-pass filter and the problem is when I exert the filter on my signal the output is so wrong.I try to exert the filter on a easy signal to test it: for example when I exert a band pass filter with 8-12 frequency range to the x=sin(2*pi*10*t)+sin(2*pi*20*t) the output must similar to sin(2*pi*10*t).but its not. I dont know where I am wrong?

*No products are associated with this question.*

Answer by Wayne King on 8 Jul 2013

Fs = 250; t = 0:1/Fs:10-1/Fs; x = sin(2*pi*10*t)+sin(2*pi*20*t)+0.25*randn(size(t)); y = sosfilt(SOS,x);

I used the following parameters in fdatool:

Fs = 250 fstop1 = 7 fpass1 = 9 fpass2 = 12 fstop2 = 14

60 dB of attenuation in both stopbands and 1 db of passband ripple.

Answer by Wayne King on 8 Jul 2013

Edited by Wayne King on 8 Jul 2013

You need to post the code you have used to design your filter. Also, include the sampling rate for your data.

For example:

Fs = 100; t = 0:1/Fs:10-1/Fs; x = sin(2*pi*10*t)+sin(2*pi*20*t)+0.25*randn(size(t)); d = fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',4,8,12,16,50,1,50,100); Hd = design(d); y = filter(Hd,x); periodogram(y,[],length(y),100)

## 0 Comments