# Tag Info

23

The simplest approach is to do some kind of spline interpolation like Jim Clay suggests (linear or otherwise). However, if you have the luxury of batch processing, and especially if you have an overdetermined set of nonuniform samples, there's a "perfect reconstruction" algorithm that's extremely elegant. For numerical reasons, it may not be practical in all ...

18

In short: Upsampling: does/should not loose information (if done wisely), then safer, Downsampling: may loose information (if done unwisely), yet more computationally efficient. So if you compare data at different rates, and in an evaluation phase when one tries to define how the comparison should be done (which features are compared, with what metric, ...

18

Downsampling and upsampling are operations that change the sampling rate of a signal. Each one of them is composed of two steps, changing the sampling rate and filtering. Usually, the amount of change is expressed as a ratio. When downsampling, we are trying to take the signal from some $Fs$ to some $Fs_n < Fs$. The key problem with doing this is that we ...

11

For the purposes of this answer I will use Matlab's terminology and define "upsampling" as the process of inserting $m-1$ zeros in between the input samples, and "interpolation" as the combined process of upsampling and filtering to remove the $m-1$ aliases ($m$ being the interpolation factor) that upsampling introduces. For an explanation of how/why ...

11

The difference between cubic interpolation as described in your question and cubic spline interpolation is that in cubic interpolation you use 4 data points to compute the polynomial. There are no constraints on the derivatives. Cubic spline interpolation computes a third order polynomial only from two data points with the additional constraint that the ...

10

One trick, for even-length signals, is what to do with the "middle" sample. Here, I've split it half and half between each side of the FFT. The other trick is to ensure that you have the right amplitudes in the resampled signal. Here's it's a factor of 2. Try this in scilab: x = rand(1,100,'normal'); X = fft(x); XX = 2*[X(1:50) X(51)/2 zeros(1,99) X(51)/...

7

You want to have an interpolation with a equal number of weights on both sides of the points you want to interpolate in between. So you choose either one or two weights on each side, resulting in an interpolation of two (linear) or four (cubic) points. An quadratic interpolation would need three points, which would only make sense at the border of a grid, ...

7

If you use a function like plot(x,y) the easiest way to display them on the same graph is to simply not resample any of them at all, but simply fill each x vector with proper values for each signal, so both appear where you want on the display. You can also setup the plot to have two different x-axes (one for each curve) with different labels and legends if ...

6

A recording originally at 8kHz and digitally upsampled to 16kHz will have almost no energy in the 4-8kHz range (whatever is here is due to imperfections in the filters used for the upsampling process). I would just use a 4kHz and 5.5kHz high pass; and use a threshold on the signal energy at the output of these filters. ... Unless your recordings are ...

6

This sounds like a problem of asynchronous sample rate conversion. To convert from one sample rate to another, we can compute the continuous time representation of the signal by performing sinc interpolation, then resample at our new sample rate. What you are doing is not much different. You need to resample your signal to have sample times that are fixed....

6

Interpolation (sampling frequency 44.1 kHz ➔ 88.2 kHz) Your original 44.1 kHz sampled signal has frequencies up to 22.05 kHz, so you should lowpass filter at 22.05 kHz after dilution with zeros. Your filter should have a gain of 2. Otherwise the signal amplitude drops to half because you set half of the samples to zero. Like Jim Clay says, you can combine ...

5

I think Jacob's answer is very workable. An easier method that's probably not quite as good in terms of introducing distortion is to do polynomial interpolation. I would use either linear interpolation (easy, not as good signal performance-wise) or cubic splines (still not too hard, better signal performance) to produce samples at any time you want from ...

5

You are looking at the wrong metric of "correctness". Nearest neighbor is introducing significant discontinuities that are showing up as massive quantities of noise in the result. The problem is that you should be comparing to the result you would have gotten if you had sampled at 26.25MHz in the first place. Let's try it (sample a 12Hz sine wave at 26 Hz ...

5

For example a delay of 0.75 sampling periods would have an impulse response like this (red squares sampled from the blue delayed sinc): Time (horizontal axis) unit is sampling periods. That kind of a filter is not causal as there are non-zero samples at negative times. None of the samples is zero, no matter how far left or right you go. That's what they ...

4

The up-sampling process will always change the signal in some measurable way. However, if it's done properly the changes are negligible and don't result it any audible difference. Most commercially sample rate converters (hardware or software implementations), do a really good job at this. Off course, if done badly, upsampling can result in clearly audible ...

4

If N is odd it's a bit simpler: FF=2*[F(1:(N+1)/2),zeros(1,N),F((N+3)/2:N)]; ff=real(ifft(FF)); This is very close to what you had (apart from the scaling). Also note that due to numerical inaccuraces you have to take the real part of the IFFT operation. However, you should always check that the imaginary part (which you throw away) is very small (in the ...

4

Since Sinc based Interpolation requires you to know the data at any point it can not be done. You might do a Truncated Sinc Interpolation. The artifacts you're seeing can be caused by a kernel which is too short or the parameters aren't good. In order to create a good Sinc kernel you need to know things about the Band Width of the signal and the Sampling ...

4

If you perform the full DFT of a signal with odd number of samples, the frequency values in the spectrum are a DC coefficient and (N-1)/2 conjugate pairs of sinusoid coefficients. If you perform the full DFT of a signal with even number of samples, the frequency values in the spectrum are a DC coefficient, (N-1)/2 conjugate pairs of sinusoid coefficients, ...

4

In the final result, you want to express the spectrum $X_d(e^{j\omega})$ in terms of $X(e^{j\omega})$, the spectrum of $x[n]=x_c(nT)$. Since $X(e^{j\omega})$ is already periodic, it must be possible to represent $X_d(e^{j\omega})$ as a sum of a finite number ($M$) of shifted versions of $X(e^{j\omega})$. This is why the original infinite sum is split up into ...

4

Downsampling loses information. Upsampling is lossless when the factor is an integer (taken you also remember the factor), but some information is lost when the factor is not an integer. Upsampling could theoretically lose more information than downsampling, for very specific resampling factors. Which one you should use? It depends on the level of certainty ...

4

Since you have already properly low pass filtered the signal, then there is no risk in taking every other sample to complete the downsampling operation. If you were to create a low pass filter that passed your spectrum of interest with no distortion, and rejected all energy in the alias frequency locations then taking every other sample would provide a ...

4

Sample playback The basic idea of sample playback in musical applications is to keep track of each voice's playback position, to form an output sample by reading the source sample data at the playback position, to add a possibly time-varying playback step to the playback position, and to repeat this in a program loop until we have accumulated enough output ...

4

For a given «visual accuracy», you need to sample the sine at a sufficient number of time-steps per period. At some point the display pixel density will be to low to render a sine accurately. For waveform editors (that usually have access to only a finite rate sampled waveform, not a continously defined trigonometric function), I assume that some practical ...

3

What should the bandwidth of the BPSK OFDM signal be after resampling? Is it 50 Hz (according to theoretical graph shown), 40 Hz (simulated before resampling) or 80 Hz? What you call resampling is actually modelling D/A conversion with a discrete simulation system. Resampling consists of a repetition of every sample plus low pass filtering. Your D/A ...

3

More expensive computationally with marginal results. Most images don't require such interpolation technique. You can also look at this question: Higher order spline interpolation

3

I'll start by saying I don't know anything about GPS, but I believe WanderingLogic has answered the question correctly and I'll see if I can illustrate this with a simplified problem. Let's say the original transmitted signal is a simple sine wave of 1Hz. This will analogous to the transmitted signal from the GPS satellite, and by the way this is the ...

3

The ratio of sample playback rates should be equal to the ratio of pitches you want to obtain. For example, if your C4 note was sampled at 48kHz, you'll need to play it back at $48000 \times \frac{277.18}{261.63} = 50.85kHz$ to make it sound like a C#4.

3

There are a couple of ways that you can do it. The first is with resample, but it is a multi-step process. First, you have to figure out which interpolation and decimation factors will get you the sample rate you want. [n, k] = rat(16000.1 / 128000); That gets you an interpolation factor of 20000 and a decimation factor of 159999. You factor those to ...

3

Jim's answer covers it quite well. All upsampling methods follow the same basic scheme: Insert zeros between samples: These results in a periodic repetition of the original spectrum but leaves the spectrum in the original band completely intact Low pass filter to get rid of all the mirror spectra The main difference between methods is how the low pass ...

3

For those seeking more DSP/FPGA friendly solution, just substitude 'a' in first equation and rearrange to get: $$\begin{array}{ll} C_0(x) = &-\frac{1}{6}x^3+\frac{1}{2}x^2-\frac{1}{3}x \\ C_1(x) = &\frac{1}{2}-x^2-\frac{1}{2}x+1 \\ C_2(x) = &-\frac{1}{2}x^3 + \frac{1}{2}x^2+x \\ C_3(x) = &\frac{1}{6}x^3 - \frac{1}{6}x \end{array}$$ And ...

Only top voted, non community-wiki answers of a minimum length are eligible