首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >汉宁窗口和在线FFT

汉宁窗口和在线FFT
EN

Stack Overflow用户
提问于 2012-08-26 09:21:26
回答 3查看 12.5K关注 0票数 3

我正在学习DSP,我不会写代码来计算和绘制这些数字(只是频域中的汉宁和三角窗的大小)。有没有人能帮我写一下代码?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-26 10:24:30

我希望下面的代码能对你有所帮助。

代码语言:javascript
复制
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-');

注释:

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

票数 4
EN

Stack Overflow用户

发布于 2012-08-26 11:28:01

时间步长或样本(Fs)的频率除以馈送给FFT的时间步长( FFT长度),得出FFT结果箱的频率步长(最高Fs/2)。

票数 1
EN

Stack Overflow用户

发布于 2013-02-16 06:35:33

关于你问题中的1024个“时间步长”,这只是从时域信号中提取的样本数量。

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

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

至于汉恩(汉宁)和三角窗口代码,它们如下:

代码语言:javascript
复制
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) ) )

..。

下图是三角形窗口的频率响应,单位为dB。

下图是三角形窗口的频率响应,但现在是线性幅度。

您可以在此处绘制Hann、三角形和许多其他窗口函数:Plot windows functions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12126979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档