基于@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)。
最重要的是: