Zero padding in frequency domain causes noise in time domain

7 次查看(过去 30 天)
Hello everybody,
I have a problem by zeropadding a signal in frequency domain to get a higher sampling rate in the time domain. The oversampled result in time domain gets additional noise (see figure).
Is there a way to oversample "my" signal without this additional noise?
Here is my code:
% B1: input signal with 128 samples
z = fft(B1);
% pad high frequency
zp = fftshift(z);
zp(1) = zp(1)/2;
zp(end+1) = zp(1);
zp = ifftshift([zeros(1,64),zp,zeros(1,63)]);
% resampling and renormalization
B2 = ifft(zp)*2;
Many thanks Chris

采纳的回答

Matt J
Matt J 2014-8-18
编辑:Matt J 2014-8-18
The FFT-upsampling that you are doing is equivalent to sinc-interpolation. What you seem to be interpreting as "additional noise" is really just the non-monotonic character of sinc interpolation. I.e., sinc interpolators don't necessarily connect adjacent data points with monotonic curves, so you can get additional peaks and valleys in the upsampled signal.
If you want monotonically connected data points, you can use interp1 to do linear or shape-preserving cubic interpolation.
  2 个评论
Christopher
Christopher 2014-8-20
Thank you very much for your reply. So there is no error in my code and I have to live with this result or change the interpolation method.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Multirate Signal Processing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by