Matlab-带加窗和重叠的FFT

时间:2019-06-14 22:59:16

标签: matlab

基于@Abhineet Gupta提供的评论,我正在修正我的问题。我试图将开窗和重叠应用于信号的FFT。

NFFT = 2^nextpow2(L);    
y_buff = buffer(y,L_buff,overlap,'nodelay');
wnd = hanning(L_buff);

L_buff是样本总数L的一部分。

size_y_buff = size(y_buff);
num_fft = size_y_buff(2);

for j=1:num_fft
   y_fft = y_buff(:,j).*wnd;
   y_fft = [y_fft;zeros(L-L_buff,1)];
   Y_buff = fft(y_fft,NFFT)/(L-L_buff+sum(wnd));
   amp(:,j) = 2*abs(Y_buff(1:NFFT/2+1));
end
amp = sum(amp');

目前,这就是我所拥有的要旨。我可以对缓冲数据的每个部分进行FFT并平均幅度,但这意味着较低的频率分辨率(Fs / L_buff)。我想保持相同的分辨率:Fs / L。在我看来,这是对(L-L_buff)样本进行零填充。最后,在进行归一化时,由于应用了窗口,因此我想将L_buff样本(矩形窗口)替换为“ sum(wnd)”样本。

即使其余部分都是正确的,我也知道不能只是sum(amp)。

最重要的是:

  1. 减少泄漏->加窗
  2. 使用更多数据->重叠
  3. 如何在保持高频分辨率(Fs / L)的同时结合以上两者的优点

0 个答案:

没有答案