离散有限采样的逆傅里叶 Window

Inverse Fourier of a Discrete and Finite Sampling Window

我试图找到具有 N_f = 11 个元素的离散采样 window 的逆傅立叶。我期待在时域中看到 periodic Sinc-like signal

但是,这是我得到的输出:

为什么我的输出中观察到的振荡次数比预期输出多?

N_f = 11; % Number of samples in the finite sampling window in Frequency domain
delta_f = 1;
f = [-N_f/2+1:delta_f:N_f/2];
wf = ones(1, N_f)/N_f; % W(f):finite sampling window in Frequency Domain
N_t =128;
wt = ifftshift(ifft(wf, N_t))*N_t; % w(t):Inverse Fourier of the window

我认为您的代码存在的问题之一与原点位置有关。您创建了一个数组 wf,其中包含 11 个(并已归一化),然后调用 ifft(wf,128)。这会用零填充数组,使其大小为 128,但 11 个位于左侧。你可以通过

看到这个
fft(ifft(wf, N_t))

因此,您的 window 向右移动了 5 个样本,覆盖频率区间 0 到 11,而不是 -5 到 5(或者相同,0 到 5 和 124 到 128)。

下面的代码创建了一个包含 128 个样本的信号,并用 1/11 填充了中间的 11 个频率区间。通过调用 ifftshift 我们旋转信号,使中间元素移动到最左边的 bin。现在 bin 0 到 5 和 124 到 128 是非零的。然后我调用 ifftfftshift 将 0 频率移回信号的中间。最后,我绘制了这个信号的三个重复。

N_f = 11; % Number of samples in the finite sampling window in Frequency domain
N_t = 128;
wf = zeros(1,N_t);
wf( N_t/2 - floor(N_f/2) + 1 : N_t/2 + floor(N_f/2) + 1 ) = 1 / N_f;
wt = fftshift(ifft(ifftshift(wf))) * N_t;
figure; plot(repmat(wt,1,3))

如您所见,结果如您所料。请注意,ifftwt 结果实际上是实数值。逆变换的结果不是实值,您必须忽略虚部才能生成您的图。这表明输入信号不对称!

我们可以将 N_f 更改为两倍大,产生与您的类似的结果,但具有纯真实的输出:

N_f = 21;
N_t = 128;
wf = zeros(1,N_t);
wf( N_t/2 - floor(N_f/2) + 1 : N_t/2 + floor(N_f/2) + 1 ) = 1 / N_f;
wt = fftshift(ifft(ifftshift(wf))) * N_t;
figure; plot(repmat(wt,1,3))