4
$\begingroup$

I have a signal which is bandlimited and can be sampled at arbitrary continuous positions. The value at any position is given by an expensive computation. I need to do some further computation on various arbitrary small regions of this signal.

My plan is to take advantage of the known bandlimiting to sample the signal at or slightly above the Nyquist rate within these regions that I need to process, and then do my computation on a reconstructed approximation of the region. This reconstruction needs to be in a form that allows for evaluation at arbitrary time t within the reconstructed range. Because of the expense of computing each sample, I need to minimise the number of samples required to reconstruct each region. The regions are sized such that they are between 8 and 16 samples wide at the Nyquist rate.

The thing that makes this different from standard usages of sinc interpolation is the small number of samples. That's the focus of this question. It's typical for sinc based reconstructions to experience problems near the edges of the signals, but when a signal is only 8 samples wide, most of it is edge.

My question concerns how to optimally reconstruct these small regions with minimal samples. I particularly would like to know whether it's possible to achieve a reasonable reconstruction with all samples being within the region I'm reconstructing. I suspect that the answer is no, because there's insufficient information to reconstruct towards the edges of the region, but I would like to have this confirmed. My experiments with various windowed sinc methods support this suspicion.

Assuming that I can't rely on only samples within the region, is there anything better I can do than taking a few extra samples on either side of the region and then continuing to use basic sinc methods?

I don't have a firm definition of a good enough reconstruction, but for the purposes of the question, let's say that at all points along the reconstruction, the error should be no more than 10%.

$\endgroup$
  • $\begingroup$ This is my first participation on DSP so I'm not very familiar with the appropriate tags. I welcome any edits to add/remove tags from this question. $\endgroup$ – Sam Feb 29 at 18:41
  • $\begingroup$ Would a circular interpolation be acceptable? Meaning the end points would wrap around as if they were continuous at that boundary? $\endgroup$ – Dan Boschen Feb 29 at 19:20
  • $\begingroup$ No @DanBoschen that doesn't work here. The reconstruction needs to be as faithful as possible to the source signal the samples come from, and that signal is not circular. $\endgroup$ – Sam Feb 29 at 19:23
  • $\begingroup$ Would a best fit pure tone at the fundamental frequency suffice? $\endgroup$ – Cedron Dawg Feb 29 at 22:11
  • $\begingroup$ Not at all @CedronDawg, I'm looking for a close accurate recreation of the original signal. It should hug the original line as tightly as possible. $\endgroup$ – Sam Feb 29 at 22:21
2
$\begingroup$

I have some very short signals in the range of 8 to 16 samples. These represent a bandlimited signal, sampled at or slightly above the Nyquist rate.

Nope. A signal can't be limited in time and in frequency at the same time. If it's very short, than chances are the bandwidth is a lot higher than you think it is and that you've already picked up some significant aliasing in the sampling.

I've experimented with sinc interpolation with a few different windowing methods, and also tried numerically optimising a kernel to achieve the interpolation, without success.

Can you elaborate what your problem is? If it's sampled correctly, sinc interpolation typically does a good job, although it does destroy any causality and will extent the signal in time. But that goes back to my first point: a band-limited signal can not be limited in time as well, so it can't be causal either.

| improve this answer | |
$\endgroup$
  • $\begingroup$ I know that for a finite signal I can never achieve the theoretical perfect reconstruction, but what I'm not sure about is the limits of how good a reconstruction can get under these constraints. I don't completely follow what you're saying about causality (I'm reading up on that property now, but don't have prior education) but I've found that the sinc interpolation is unable to recreate the original signal towards the edges. It can be fairly accurate between the central samples, but deviates elsewhere. I'm assuming this may be a theoretical limitation, but I'd like to confirm that. $\endgroup$ – Sam Feb 29 at 23:06
  • $\begingroup$ i'm not sure, Hilmar, but maybe the problem is about non-uniform sampling and reconstruction. $\endgroup$ – robert bristow-johnson Mar 1 at 4:53
  • 2
    $\begingroup$ If you know the Sinc reconstruction isn’t accurate, then you are claiming you know more about the original signal than just the samples in the rectangular window. Same if you know for sure the signal isn’t circular. Use that information. Model the source and remove your claimed error. $\endgroup$ – hotpaw2 Mar 1 at 6:47
  • $\begingroup$ @hotpaw2 The signal is pretty much arbitrary, I don't know anything about it other than the bandlimiting. An arbitrary signal comes in and I process it. I can know the reconstruction's not reliably accurate because I can test it with signals that I do know about during development. The issue with the sampling cost is in a high performance production environment, but I can sample as much as I like for testing purposes. I think the proper answer to this question is probably just that I need more samples around the ends of the signals and that there's no getting around that. $\endgroup$ – Sam Mar 6 at 18:16
1
$\begingroup$

A bandlimited signal is infinite in duration. Even a low pass filtered signal for anti-aliasing implies a long duration.

So if you don’t have signals off the ends, try generating them. Add a Monte Carlo shotgun of points to each end generated using anything known about the legal distribution of the signal. Reject the random end extension points that look bad (too circular, out-of-range, too much overshoot, too flat etc.) and average the rest.

Then interpolate as before.

If you really don’t know anything about the data off the ends, then how do you know an interpolation using the random data isn’t a perfect match?

| improve this answer | |
$\endgroup$
1
$\begingroup$

One possibility is to use a "discrete sinc interpolation", which uses a compact support version of a sinc (which is not a truncated sinc). Otherwise there are methods based on the discrete cosine transform (DCT) and discrete sine transform (DST). Another interesting approach is based on "sinc-lets". These are reviewed in this paper. In particular, look at sections 4 and 5 and figure 17.

| improve this answer | |
$\endgroup$
1
$\begingroup$

One more possibility, if you have a lot more and longer training data than production data.

Attempt to train a machine learning model (DNN, etc.) against shorter segments of the test data to predict the interpolated values in regions where Sinc interpolation alone is too inaccurate. Use data from longer segmenting to validate during training. If you don't know about the data, that is not the same as saying the data's statistics are unknowable. (absence of evidence is not the same as evidence of absence). A machine learning model just might be able to pick out some pattern above pure randomness, allowing your interpolations in the absence of data to be more statistically reliable.

| improve this answer | |
$\endgroup$
  • $\begingroup$ I've already used ML methods to try something like this. I learned kernels for each super sample position, but was only able to achieve very slightly better results than with sinc methods. I suppose that trying to learn a more complex model than the kernel may give better results, but at some point when the interpretation process becomes too complex, it becomes cheaper just to take more samples. When I say that I don't know the data's statistics, that's for good reason. I don't control the data coming in, it could be anything. The only thing that I know is that it is specced to be bandlimited. $\endgroup$ – Sam Mar 6 at 20:34
  • $\begingroup$ This was meant to be a simple theoretical question, but I think my lack of experience in this area lead to some unintended interpretations that went down unintended paths. Essentially it's just about sinc style interpretation of bandlimited signals. The standard interpolation methods work great as long as there's a sufficiently wide margin of known samples around the interpolation point. I was trying to work out whether I could use some form of one sided sinc to interpolate well near the edges, when all of my samples are on one side of the interpolation point. Standard windowing is symmetric. $\endgroup$ – Sam Mar 6 at 20:43
0
$\begingroup$

I think I have the gist of what you are asking, but I am clarifying to make sure.

Short answer: Yes, using a DFT. You just have to compensate (select) the correct alias.

The assumption is that your signal is a periodic one. Also that when you say "band limited", but the fundamental won't suffice, the signal is composed of the fundamental and a few harmonic overtones.

Since the fundamental is near or at (problematic) the Nyquist frequency, that means the overtones will be higher. No problem, in a DFT they don't disappear they just wrap around the corner and look like a different frequency. As long as you know what the actual expected frequency range is, you can select the proper alias to use in your interpolation function.

You will still need to estimate the amplitudes and phases of the constituent tones once you have estimated their frequencies from the bins.

With only eight bins, of which two are DC and Nyquist, and the rest conjugate duplicates of three others, there isn't too much space for too many tones to be resolvable.

A few graphics demonstrating what you are really asking would also be helpful.

| improve this answer | |
$\endgroup$
  • $\begingroup$ Sorry, I clarified this in a comment already, but the signal is not periodic. Perhaps I should explain my scenario better. I have some long continuous bandlimited "original" signal. I am sampling small sections of that signal at or above the Nyquist frequency of the original signal. I wish to reconstruct that original signal over the duration covered by the samples. I know I can't do that perfectly, but I would like to do it well. I am able to take as many samples as I need, but sampling is an expensive operation in this context and I need to minimise it. $\endgroup$ – Sam Mar 1 at 0:00
  • $\begingroup$ I've edited the first paragraph of the question to clear this up. $\endgroup$ – Sam Mar 1 at 0:04
  • $\begingroup$ @Sam Still not really clear what you are asking or what you are trying to achieve. Perhaps this will help: dsp.stackexchange.com/questions/58032/… $\endgroup$ – Cedron Dawg Mar 1 at 0:10
  • $\begingroup$ Sorry, I'll see if I can make the question clearer. This isn't a world I'm very experienced in, so I may not have explained things as well as I thought. I don't think that linked question is particularly relevant to what I'm trying to achieve. $\endgroup$ – Sam Mar 1 at 0:13
  • 1
    $\begingroup$ The DFT approach will result in a circular curve-fit which he responded to my comment wouldn’t work. What about a spline first with extrapolation at the end points? $\endgroup$ – Dan Boschen Mar 1 at 3:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.