[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Using butterworth filter
From: |
StandardOctaveUser |
Subject: |
Using butterworth filter |
Date: |
Fri, 14 Dec 2012 17:00:10 -0800 (PST) |
What you need is a butterworth filter
which is supplied with signal processing
package.
Say you have N data points and
a sampling frequency of SF (in Hz). Then
you have T seconds of record.
T=N/SF;
Assume uuu is your data and it is
as zigzaggy as it gets, its random.
uuu=rand(N,1).-0.5;
Suppose you are interested in data
that has a maximum of 18 rad*Hz
frequency and above that is noise
for your purposes.
wc=18;
n=10;
[b,a]=butter(n,wc/(N*pi/T));
uuu2=filter(b,a,uuu);
uuu2 is the filtered data that you want.
n is a parameter that designates the
sharpness of the butterworth filter.
Consider having an equal amount of
each frequency.
uw=ones(N,1);
uuu1=ifft(uw).*(N/T);
now at this point uuu1 is your problematic
data.
wc=18;
n=10;
[b,a]=butter(n,wc/(N*pi/T));
uuu2=filter(b,a,uuu1);
w=(0:2*pi/T:(N-1)*2*pi/T)';
subplot(2,2,1):plot(w,abs(fft(uuu2)).*(T/N));
title('Filtered Spectra')
subplot(2,2,2):plot(w,abs(fft(uuu1)).*(T/N));
title('Unfiltered Spectra')
subplot(2,2,3):plot(uuu2);
title('Filtered Series')
subplot(2,2,4):plot(uuu1);
title('Unfiltered Series')
Try playing with wc and n and replotting
several times. When you are satisfied
with the filter you are about to apply,
apply it to the real data.
As you will see n increases sharpness of the
fall but it also causes some wiggles in the
frequencies that you want to keep depending
on what your wc is the degree to this effect
will change. The idea is to keep the frequencies
you want to pass as close to 1 in that plot and
the ones you want to get rid off falling to zero
as fast as possible.
To have an idea which frequency will look
how much zigzaggy in time series, make a
plot out of it and decide if you want to keep
it or not. ie.
SF=200;
dt=1/SF;
T=10;
w=5;
t=(0:dt:T-dt)';
Ft=sin(w*t);
plot(t,Ft);
Note: This will not filter signals according to
amplitude range as in the subject but will
filter them based on their frequency which
what you want as I understand.
--
View this message in context:
http://octave.1599824.n4.nabble.com/Filtering-Signals-according-to-an-Amplitude-Range-tp4647610p4647935.html
Sent from the Octave - General mailing list archive at Nabble.com.
- Re: Filtering Signals according to an Amplitude Range, (continued)
- Re: Filtering Signals according to an Amplitude Range, Juan Pablo Carbajal, 2012/12/07
- Re: Filtering Signals according to an Amplitude Range, pkohvaei, 2012/12/07
- Re: Filtering Signals according to an Amplitude Range, Ismael Diego Nunez-Riboni, 2012/12/07
- Re: Filtering Signals according to an Amplitude Range, pkohvaei, 2012/12/07
- Re: Filtering Signals according to an Amplitude Range, Ismael Diego Nunez-Riboni, 2012/12/07
- Re: Filtering Signals according to an Amplitude Range, Ismael Diego Nunez-Riboni, 2012/12/07
- Re: Filtering Signals according to an Amplitude Range, pkohvaei, 2012/12/07
- Re: Filtering Signals according to an Amplitude Range, Ozzy Lash, 2012/12/07
- Re: Filtering Signals according to an Amplitude Range, pkohvaei, 2012/12/14
- Re: Filtering Signals according to an Amplitude Range, pkohvaei, 2012/12/14
- Using butterworth filter,
StandardOctaveUser <=
- Re: Using butterworth filter, StandardOctaveUser, 2012/12/14
- Re: Using butterworth filter, Sergei Steshenko, 2012/12/15
- Re: Using butterworth filter, StandardOctaveUser, 2012/12/15
- Re: Using butterworth filter, Sergei Steshenko, 2012/12/15
- Re: Using butterworth filter, StandardOctaveUser, 2012/12/15
- Re: Using butterworth filter, Sergei Steshenko, 2012/12/15
- Re: Filtering Signals according to an Amplitude Range, Juan Pablo Carbajal, 2012/12/08