Suppose I have frequency domain measurements from a channel between 1
and 10 GHz - for example like (c) in this figure:
What is the best way to upsample the impulse response to a higher rate?
(In the rest of the posting I describe the details and what I've tried)
At the rate of 20 GHz, the impulse response is trivially given as
h = ifft([ A ; conj(A(end:-1:2) ]);
Now suppose I want to simulate this channel together with an equalizer
at a rate of 5x20 = 100 GHz. There are multiple options like:
1.) h1a = upsample(h,5);
2.) h1b = resample(h,5,1);
Option 1 is not physical since it represents a pulse train. Option 2
performs nice interpolation and removes the images. However, the impulse
response has ringing (looks like a windowed sinc function). This results
in the problem that after I equalize for the channel (which naturally
happens at the symbol rate) I see this ringing as a big overshoot:
Looking at the eye diagram, it can be seen that the eye for a [-1,1]
signal is closed although the equalization is nearly optimal:
The reason (I think) is that the convolution between the (upsampled)
impulse response and the equalizer coefficients is this nice ringing
However, in practice, this equalized pulse response looks like a spread
Of course I do not have the filter response beyond 10 GHz. However,
using the Kaiser window resample uses results in a sudden drop in the
frequency response of the filter. In practice, it can be assumed that
the requency response continues to drop at the same rate beyond 10 GHz.
So is there a way to perform the upsampling in a way such that the
frequency data beyond 10 GHz is assumed to be a smooth as possible
continuation of the given frequency response, hence minimizing time
Reply by Greg Berchin●July 7, 20172017-07-07
On Fri, 7 Jul 2017 16:19:03 -0700, Peter Mairhofer <email@example.com> wrote:
>Suppose I have frequency domain measurements from a channel between 1
>and 10 GHz - for example like (c) in this figure:
>What is the best way to upsample the impulse response to a higher rate?
Once again, FDLS might be the right answer, if you have phase as well as
magnitude measurements. You can try extrapolating the magnitude and phase curves
up to half your desired upsampled rate, creating just enough discrete points in
the extrapolated region to make the algorithm happy. The example Matlab code
that I wrote and distribute is capable of creating a weighted least-squares fit;
you should definitely weight the measured frequency response points higher than
the extrapolated points.
Once you have the transfer function model, it is a trivial matter to use it to
compute the impulse response.
I experimented with such high-frequency extrapolation 30 years ago, but I do not
remember how successful the results were. So if you try it, please tell the
world whether it worked ... or didn't.