Restorative Up-Sampling Discussion
Our Restorative Up-Sampling algorithm (RUP) is embodied in the MATLAB file {rup.m}, which also makes use of the sub-routines {forksub.m} and {spoon.m}.
This algorithm may be called 'alchemical' in that it aims to restore the 'gold' of lost high-frequency components in a severely under-sampled signal, while, at the same time, purifying the signal of the 'dross' of aliasing noise. It may have additional applications in fields of data compression and subsequent "unpacking," with the only theoretical limits being related to initial signal quantization error magnitude and amount of noise present.
To begin with, we structure the (N-point) time-domain data as if it were laid out around the unit-circle from (0) to (+2pi). Then, the algorithm proceeds with taking an inverse DFT of this pseudo frequency-domain representation and uses {forksub.m} to forecast one half length of the real and imaginary components out to a near double half-length rendering. Following this, a fully rendered inverse DFT is reconstructed, and a DFT operation is done to "undo" the inverse DFT which preceded the forecasting. Finally, the (2N-1) points are harvested, to yield our doubled sampling frequency signal with high-frequency components restored and previous aliasing undone.
It appears that the {spoon.m} subroutine up-samples as if the original signal were laid out in a repeating pattern throughout time, which is a distortion of the facts. A more accurate up-sampling might be had if the original signal were Fourier forecasted, both backward and forward, well beyond the "area of concern," and then up-sampled, with subsequent trimming back to the original "area of concern." We have added this feature to the up-sampling master file {rup.m}, with the call variable "f" being the number of forecasting "loops" before up-sampling and then subsequent trimming back to the original signal "time-frame" length.
Below, please find two audio clips. File "C" is a (8x) under-sampled clip from the beginning of "Pachelbel's Canon." It is so severely under-sampled (3000Hz sampling frequency) that much of the high-frequency fidelity has been lost, in addition to the adding of significant aliasing. File "D" contains the output of running this under-sampled file through our algorithm with enough up-sampling "passes" - (3), to bring the sampling frequency up to 24kHz. The value for the number of pre- and post- forecasting "loops," (f), was set to six for our trial, which maxed out our computer memory. If the algorithm is successful, a near faithful rendering of the clip will be heard.