离散有限采样的逆傅里叶 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 是非零的。然后我调用 ifft
和 fftshift
将 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))
如您所见,结果如您所料。请注意,ifft
的 wt
结果实际上是实数值。逆变换的结果不是实值,您必须忽略虚部才能生成您的图。这表明输入信号不对称!
我们可以将 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))
我试图找到具有 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 是非零的。然后我调用 ifft
和 fftshift
将 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))
如您所见,结果如您所料。请注意,ifft
的 wt
结果实际上是实数值。逆变换的结果不是实值,您必须忽略虚部才能生成您的图。这表明输入信号不对称!
我们可以将 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))