离散有限采样窗的逆傅里叶变换

时间:2018-01-19 18:42:45

标签: matlab signal-processing fft ifft

我试图找到具有N_f = 11个元素的离散采样窗口的逆傅立叶。我希望在时域中看到periodic Sinc-like signalenter image description here

然而,这是我得到的输出: enter image description here

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

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

1 个答案:

答案 0 :(得分:2)

我认为您的代码中的一个问题与原点的位置有关。您创建一个包含11个(并标准化)的数组class ViewController: UIViewController, UITextViewDelegate { @IBOutlet private weak var textViewBox: TextViewBox! // connected in storyboard var textView: UITextView! { return textViewBox?.textView } override func viewDidLoad() { super.viewDidLoad() textView?.delegate = self } } ,然后调用wf。这会将数组填充为零,大小为128,但11个位于左侧。你可以通过

来看到这一点
ifft(wf,128)

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

下面的代码创建一个包含128个样本的信号,并使用fft(ifft(wf, N_t)) 填充中间的11个频率区间。通过调用1/11,我们旋转信号,使中间元素移动到最左边的bin。箱子0到5和124到128都是非零的。然后我调用ifftshiftifft将0频率移回信号的中间位置。最后,我绘制了这个信号的三次重复。

fftshift

enter image description here

如您所见,结果如您所料。请注意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)) 的{​​{1}}结果实际上是实值的。逆变换的结果不是实值的,你必须忽略虚构的组件才能产生你的情节。这表明输入信号不对称!

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

ifft

enter image description here