Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 汉宁窗与在线FFT_Matlab_Signal Processing_Fft - Fatal编程技术网

Matlab 汉宁窗与在线FFT

Matlab 汉宁窗与在线FFT,matlab,signal-processing,fft,Matlab,Signal Processing,Fft,我正在学习DSP,但我无法编写代码来计算和绘制这些数字(仅限于频率域中汉宁和三角窗的大小)。有人能帮我编写代码吗 我读过一些与在线FFT相关的内容,例如,他们用1024个时间步长计算在线FFT。我不明白什么是1024个时间步长,时间步长值对FFT分析有什么影响?我希望下面的代码对您有所帮助 L = 10; win1 = hanning(L); win2 = triang(L); nfft = 64; S1 = fft(win1,nfft); S2 = fft(win2,nfft); f = 1

我正在学习DSP,但我无法编写代码来计算和绘制这些数字(仅限于频率域中汉宁和三角窗的大小)。有人能帮我编写代码吗


我读过一些与在线FFT相关的内容,例如,他们用1024个时间步长计算在线FFT。我不明白什么是1024个时间步长,时间步长值对FFT分析有什么影响?

我希望下面的代码对您有所帮助

L = 10;
win1 = hanning(L);
win2 = triang(L);
nfft = 64;
S1 = fft(win1,nfft);
S2 = fft(win2,nfft);
f = 1:nfft/2+1;
plot(f,10*log10(abs(S1(1:nfft/2+1))),'.-',f,10*log10(abs(S2(1:nfft/2+1))),'o-');
注释:


您可以将
win1
win2
作为时间序列信号
L
win1
win2
的长度
nfft
是FFT的长度。如果
L
,则函数
fft()
0
添加到
nfft
的其余部分。如果
L>nfft
,则函数
fft()
将截取
L
的长度,使其等于
nfft

时间步长或采样频率(Fs)除以fft馈送的时间步长数(fft长度),得到fft结果箱的频率步长(最高达Fs/2).

关于您问题中的1024个“时间步长”,这只是从时域信号中采集的样本数

至于1024个时域样本如何影响FFT,这涉及用于获得样本的采样频率

采样频率的选择通常符合奈奎斯特-香农采样定理,该定理基本上规定,如果要通过FFT解析频率“F”,则必须以高于“2F”的频率对时域信号进行采样

对于Hann(Hanning)和三角窗代码,它们如下所示:

Hann window:
for( i=0; i<bufLen; i++ )
   window[i] = 0.5 * ( 1 - cos( 2 * PI * i / (bufLen-1) ) )

Triangular window:
for( i=0; i<bufLen; i++ )
   window[i] = 2/bufLen * ( (bufLen)/2 - abs( i-((bufLen-1)/2) ) )
Hann窗口:

对于(i=0),认为将此称为冯-哈恩窗口更为正确。