Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: FIR Filter
Replies: 9   Last Post: Sep 20, 2009 1:25 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Wayne King

Posts: 2,961
Registered: 4/1/09
Re: FIR Filter
Posted: Sep 20, 2009 1:25 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"alfredo " <luka_ice@hotmail.com> wrote in message <h95lpb$k7g$1@fred.mathworks.com>...
> "Wayne King" <wmkingty@gmail.com> wrote in message <h92lvl$866$1@fred.mathworks.com>...
> > "alfredo " <luka_ice@hotmail.com> wrote in message <h92ku4$2o2$1@fred.mathworks.com>...
> > > Rune Allnor <allnor@tele.ntnu.no> wrote in message <6d6346f2-e093-4f73-a99b-156b9b675eb0@y42g2000yqb.googlegroups.com>...
> > > > On 13 Sep, 12:10, "alfredo " <luka_...@hotmail.com> wrote:
> > > > > I have some problems with FIR filter,someone can help me?
> > > > >
> > > > > I write my pseudo code:
> > > > >
> > > > > clear all;
> > > > > Asim=[17, 18]; ?%Definisce le ampiezze
> > > > > Tsim=[22.5, 33.48]; ?%Definisce i periodi
> > > > > fase=[1.1, 2.2]; ?%Definisce le fasi
> > > > > p=1:2048;
> > > > > value=0; ?%Oscilla attorno la linea dello zero se value=0
> > > > > Coseno1=0;
> > > > > Coseno2=0;
> > > > > Coseno1=Coseno1+Asim(1)*cos(2*pi*1/Tsim(1)*p+fase(1))';
> > > > > Coseno2=Coseno2+Asim(2)*cos(2*pi*1/Tsim(2)*p+fase(2))';
> > > > >
> > > > > serie12=Coseno1+Coseno2;
> > > > > step =0.01;
> > > > >
> > > > > serie= serie12;
> > > > > step=0.01;
> > > > > Tmin=8;
> > > > > Tmax=120;
> > > > > A=length(serie);
> > > > >
> > > > > Y=fourier(serie',Tmax,Tmin,step); ? ? ? ? ? ?%fourier trasform
> > > > >
> > > > > Ok , now how can I implement a high pass filter FIR, for cut off ?the frequency 1/ 33.48 ?

> > > >
> > > > What has all this to do with designing filters?
> > > >
> > > > Rune

> > >
> > >
> > >
> > > I try with this:
> > >
> > > d = fdesign.highpass('Fst,Fp,Ast,Ap',0.03,0.043,60,0.5,10000) ;
> > > Hd = design(d,'FIR');
> > > smoothed_data = filter(Hd,Y);
> > >
> > > but I have some problems, I thik because I have R2007b version...

> >
> > Hi Alfredo, the filter specification objects such as fdesign.highpass were introduced in the Signal Processing Toolbox in R2009a, they are part of the Filter Design Toolbox prior to that.
> > In R2007b, you have a number of non-object-oriented FIR design routines available in the Signal Processing Toolbox. Take a look at firpm() for an equiripple design, fir1() for a window method FIR design, fir2() uses frequency sampling, and firls() for least-squares error minimization as examples. Post back if you have difficulty, I'm not sure you really want the filter design you have above in fdesign.highpass (or I would have given you a comparable example) because you are basically just passing everthing. Your stopband frequency is only 0.03 Hz? (you have a sampling frequency of 10 kHz specified), your passband starts at 0.043 Hz...
> >
> > Hope that helps,
> > wayne

>
> thank you for this information, I try immediately these function but I can select if I want a high pass or a lowpass filter?
> the freq 0,03 and 0.043 ara the inverse of the period of cicles 22.5 and 33.48 ( I want to cutoff the 33.48 period cycle ), I'm not sure of f sampling becouse I work with time series .
>
> Alfredo


Hi Alfredo, I am not sure what you mean by "period cycle" so I'll just give you an example of firpm() and hopefully you can make it meaningful.

firpm() works on a normalized frequency scale [0,1] with 1 being (1)pi radians per sample.

Let's assume you want a highpass filter for data sampled at 10 kHz where you pass everything above 2 kHz and cut everything off below 1.8 kHz.

In this case we have the passband frequency:
(2*2000)/10000=0.4
the stopband frequency is
(2*1800)/10000=0.36

So a simple call to design an equiripple FIR filter is:

h = firpm(150,[0 0.36 0.4 1],[0 0 1 1]);
% The impulse response of the filter is returned in h
% you can view the filter magnitude response
fvtool(h)

Hope that helps,
wayne



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.