FFT怎么加窗

FFT怎么加窗,第1张

1. 加窗可防止频谱泄漏,窗函数的各种特衡此性可参考:www.virtins.com/doc/D1003/Evaluation_of_Various_Window_Functions_using_Multi-Instrument_D1003.pdf

若想最大限度地将某个频率的能量集中到其频率所对应的谱线困数附近可选KAISER 6窗函数。

2. 去VIRTINS TECHNOLOGY的网站免费下载multi-instrument后,在其\DAQDAOAPIs目录下有个TestDAQVC例程,其中包含一个专门用于信号处理与分析的vtSPA.dll,其API中包括一个加窗函数,double SPA_Windowing( double *DataInEU,  int WindowType,  DWORD DataCount,  BOOL FilterFlag )可供调用。 具体说明参考:咐尺迅www.virtins.com/Signal-Processing-and-Analysis-APIs.pdf

有55种窗函数可供调用。

%% Hanning FFT

hw=hann(N,'periodic')

Xh=fft(x.*hw')

Xh=Xh(1:N/2)*2

Xhabs=abs(Xh)

for i= 1 : m

[Amax,index]=TriFind(Xhabs,floor((i*f0-15)/fsN),ceil((i*f0+15)/fsN))% 搜索区域极大值及其下标

if(index==-1)

Fn(i,4) = 0

An(i,4) = 0

Pn(i,4) = 0

else

% 下面是插值部分

if(Xhabs(index-1) >Xhabs(index+1))

a2 = Xhabs(index-1) / Xhabs(index)

r2 = (2-a2)/(1+a2)

k02 = index -1

else

a2 = Xhabs(index) / Xhabs(index+1)

r2 = (2-a2)/(1+a2)

k02 = index

end

Fn(i,4) = (k02+r2-1)*fs/N

An(i,4) = 2*pi*r2*(1-r2*r2)*Xhabs(k02)/(N*sin(r2*pi))

Pn(i,4) = phase(Xh(k02))-pi*r2

Pn(i,4) = mod(Pn(i,4),pi)

if(abs(r2)<0.000001)||(abs(r2-1)<0.000001)

% Fn(i,4) = (index-1)*fs/N

An(i,4) = 2*Amax/N

end

Fn_err(i,4) = (Fn(i,4) - Fn(i,2))/Fn(i,4)

An_err(i,4) = (An(i,4) - An(i,2))/An(i,4)

Pn_err(i,4) = (Pn(i,4) - Pn(i,2))/Pn(i,4)

end

end

% 这弯昌是我写的氏饥部分代码,歼闹返你参考下吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12312076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存