philgo wrote:
> Hi Andor,
>
> I didn't see your second reply before my previous post.
> It's getting more interesting now.
>
> Suppose I choose M a very large number, say 1024, as I want to make it
> quite an accurate approximation.
>
> And as you suggested, I first calculate the discrete time fourier
> transform, ie. the frequency response H(w).
>
> The next step, I am supposed to sample 1024 points from H(w), i.e., to
> get the DFT of the original a[k]'s. Because H(w) is a continuous signal
> and is periodical, then I just sample 1024 uniformly distributed points
> in a single period of H(w).
H(w) is not necessarily periodic - if one single ratio t_k / t_m is
irrational, there is no common time grid which covers all the delay
times t_k. This means that H(w) is not periodic. However, that does not
concern you, as you are only interested applying the filter to
bandlimited signals. Therefore you sample H(w) in the interval [-pi,
pi[ at N evenly distributed points.
>
> The next step, I do size 1024 IDFT.
>
> I am a little unclear about the windowing. What shall I do exactly to
> the size 1024 sequence that I obtained after the IDFT. What should I
> with the window length and the window shape to control the
> approximation? Thanks a lot.
Thinking about this more, I'm also a little unclear :-). H(w) is
probably not a linear-phase filter, so one would have to come up with
some sort of asymmetric window. I haven't seen the windowing method
mentioned for general phase FIR filters. It would require some more
thought. In the meantime, just take the IDFT of the sampled H(w) as FIR
coefficients.
By the way, yet another method would be to sample the impulse response.
Continuing with our notation, the (continuous time) impulse response of
your filter is
h(t) = sum_k a_k sinc(t - t_k).
An FIR approximation could be h_n = h(n), for n = - M1, -(M1-1), ...,
-1, 0, 1, 2, ..., M2, where the two tuning constants M1 and M2 can be
chosen to satisfy your approximation condition for the filter. For
positive t_k, one would probably chose M2 > M1.
Regards,
>
> Andor wrote:
> > I wrote:
> > > philgo wrote:
> > > > hi, suppose I have the FIR channel with 10 taps.
> > > > My target sampling rate is, for example, 50MHz, i.e., the sampling
> > > > period is 20ns.
> > > > But my channel taps do not fall on integer units of the sampling
> > > > period, say they fall on
> > > > 33, 44, 55, 66, 77, 88, 99, 111, 122, 133 ns respectively.
> > > > What shall I do to create a FIR channel with taps falling exactly on
> > > > integer number of samplings? thank you in advance.
> > >
> > > Let's say the input signal was x[n], and you wanted to compute
> > >
> > > y[n] = sum_k a_k delay( x[n], t_k),
> > >
> > > where the function delay(x[n], t) simply delays the signal x[n] by the
> > > real value t, the t_k are the tap delays and the a_k are the tap
> > > weights. The only problem is to compute the delay function. You can do
> > > this by seperating t into integer and fractional part, ie.
> > >
> > > t = m + f,
> > >
> > > for example 3.14142... = 3 + sqrt(2) / 10. This way you can reduce the
> > > delay function to compute delays that lie in [0, 1[ by using
> > >
> > > delay(x[n], t) = delay(x[n-m], f).
> > >
> > > That last function is called a fractional delay and can be implemented
> > > using an FIR filter (with integer tap delays). An easy method to design
> > > the filter is via windowed sinc. Do you need more help with this?
> >
> > On second thoughts, perhaps a more direct approach to model your filter
> > is with the windowing technique. If we assume the above impulse
> > response, the frequency response is given by
> >
> > H(w) = sum_k a_k exp(-j w t_k).
> >
> > You can sample H on a regular grid with M points, compute the inverse
> > DFT and then window with a window of size N<M to get the impulse
> > response (the regularly-tapped FIR filter coefficients). M, N and the
> > window are parameters that allow you to determine the grade of the
> > approximation.
> >
> > >
> > > Regards,
> > > Andor