EDA365电子论坛网

标题: 关于fft与加窗fft [打印本页]

作者: fanA    时间: 2022-9-20 16:18
标题: 关于fft与加窗fft
用matlab仿真fft算法时,分别采用直接fft和加窗fft仿真,为什么加窗后的结果还不如不加窗的呢?
' b3 y  G- _5 M4 C+ m8 \( J+ B" }程序如下:
* u# {& b1 P- k! D, B直接fft程序:
, ^) z$ @: ^% Z$ p6 z0 H" fclear;
7 r6 A' c# E4 @0 x) t  z- _0 G! bfs=12800;0 p  e8 w3 u" x9 |4 M
N=256;
4 J' u4 M" ?6 at = 0:1/fs:0.02-1/fs;
0 Y8 T  B; d  h4 j. G. D' My=cos(2*pi*50*t+10*pi/180)+cos(2*pi*300*t+20*pi/180); %模拟输入信号2 d$ N& l0 `  j7 X. S2 Z5 z/ h9 O
Y = fft(y,256);6 V- Y5 r4 D9 O' p/ B
Pyy =abs(Y(1:256))*2/256; %幅值
# F! M: ?( C$ Z+ ~0 k4 }5 r. Rpha=angle(Y(1:256))/pi*180; %相位7 t: s$ V* q4 M# o& `# k1 i7 U
5 U1 Z, F4 o& J1 C
加窗fft程序:
3 E2 G. ?* G0 U/ B3 A/ u& a7 Oclear;
3 {7 r+ d7 Q# c' ?- P- n# Dfs=12800;8 v2 Y+ s6 o, {. X0 i- |
N=256;
9 v( v- _4 Z3 @2 e! Tt=0:1/fs:0.02-1/fs;* W  f) T, Q, b. _- r# R
x=cos(2*pi*50*t+10*pi/180)+cos(2*pi*300*t+20*pi/180); %模拟输入信号# n  M' o2 A& y
n=[0:N-1];$ o2 n' `$ Z0 e) k# O! `6 {
w=0.5-0.5*cos(2*pi*n/N); % 汉宁% r) ^: a$ t8 p5 h. ~- J
y=x.*w;% y' @# Q" n2 T
Y = fft(y,N);
# B( }& E8 u6 _% T2 VPyy =abs(Y(1:N))*2*2/N; %幅值- G+ M# V' N- e1 E2 h
pha=angle(Y(1:N))/pi*180; %相位
, J3 _" @& F) R/ I- @
# j3 V' l- n& H! g  Q# b! Y加窗的频谱泄漏为何更严重?/ M; q. t  v' Y

作者: Jame33    时间: 2022-9-20 16:51
我没有用你的程序仿真,单一般这样的问题造成的原因是,窗函数不正确,窗的类型没选对,比如衰减度并不符合你原来信号频谱的要求。8 N0 q3 `$ Y; I6 Y

作者: ESCAPE    时间: 2022-9-20 17:09
你可以试试用MATLAB自配的窗函数试试,用凯撒窗通过调BETA值可以调整衰减度,多试几次对比一下,慢慢就能看出结果了。- z. z3 W/ N: q





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2