Imported Upstream version 3.0
[debian/gnuradio] / gnuradio-core / src / utils / filter_tools.m
1 %
2 % Copyright 2001 Free Software Foundation, Inc.
3
4 % This file is part of GNU Radio
5
6 % GNU Radio is free software; you can redistribute it and/or modify
7 % it under the terms of the GNU General Public License as published by
8 % the Free Software Foundation; either version 2, or (at your option)
9 % any later version.
10
11 % GNU Radio is distributed in the hope that it will be useful,
12 % but WITHOUT ANY WARRANTY; without even the implied warranty of
13 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 % GNU General Public License for more details.
15
16 % You should have received a copy of the GNU General Public License
17 % along with GNU Radio; see the file COPYING.  If not, write to
18 % the Free Software Foundation, Inc., 51 Franklin Street,
19 % Boston, MA 02110-1301, USA.
20
21 %% equivalent to the C++ code in VrComplexFIRfilter::buildFilterComplex
22
23 1;
24
25 %% hamming window, nothing fancy
26
27 function taps = build_filter_complex_lp (gain, ntaps)
28
29   taps = gain * (0.54 - 0.46 * cos (2 * pi * (0:ntaps-1)' / (ntaps-1)));
30
31 end
32
33 %% old_taps describes a low pass filter, convert it to bandpass
34 %% centered at center_freq.  center_freq is normalized to Fs (sampling freq)
35
36 function new_taps = freq_shift_filter (old_taps, center_freq)
37
38   ntaps = length(old_taps);
39   
40   new_taps = exp (j*2*pi*center_freq*(0:ntaps-1)') .* old_taps;
41
42 end