design of FIR, linear phase filters, frequency sampling technique
[hst]=fsfirlin(hd,flag)
:hd vector of desired frequency response samples : :flag is equal to 1 or 2, according to the choice of type 1 or type
2 design
:
function for the design of FIR, linear phase filters using the frequency sampling technique
//
//Example of how to use the fsfirlin macro for the design
//of an FIR filter by a frequency sampling technique.
//
//Two filters are designed : the first (response hst1) with
//abrupt transitions from 0 to 1 between passbands and stop
//bands; the second (response hst2) with one sample in each
//transition band (amplitude 0.5) for smoothing.
//
hd=[`zeros`_(1,15) `ones`_(1,10) `zeros`_(1,39)];//desired samples
hst1=fsfirlin(hd,1);//filter with no sample in the transition
hd(15)=.5;hd(26)=.5;//samples in the transition bands
hst2=fsfirlin(hd,1);//corresponding filter
pas=1/`prod`_(`size`_(hst1))*.5;
fg=0:pas:.5;//normalized frequencies grid
`plot2d`_([1 1].*.fg(1:257)',[hst1' hst2']);
// 2nd example
hd=[0*`ones`_(1,15) `ones`_(1,10) 0*`ones`_(1,39)];//desired samples
hst1=fsfirlin(hd,1);//filter with no sample in the transition
hd(15)=.5;hd(26)=.5;//samples in the transition bands
hst2=fsfirlin(hd,1);//corresponding filter
pas=1/`prod`_(`size`_(hst1))*.5;
fg=0:pas:.5;//normalized frequencies grid
n=`prod`_(`size`_(hst1))
`plot`_(fg(1:n),hst1);
`plot2d`_(fg(1:n)',hst2',[3],"000");