happytaotao 发表于 2006-8-31 20:57

怎么直接对信号加除矩形窗以外的窗?

在matlab里现在要想给信号加别的窗,只能先给信号加矩形窗,变成有限长序列后,再加hanning窗,但是这样似乎对处理的结果有很大的影响。我想知道有没有办法,使得信号直接加hanning窗?
以前有个帖子也问过同样的问题,但是我看到的回答:w=hanning(256), P=abs(fft(w.*xn,256).^2/norm(w)^2
这个实际上也是加了两个窗吧?矩形和hanning?

[ 本帖最后由 zhlong 于 2007-8-14 22:35 编辑 ]

yangzj 发表于 2006-8-31 20:58

先加矩形窗,再加hanning窗(两窗长度一样)
和直接回hanning窗不是一样的吗?

happytaotao 发表于 2006-8-31 21:04

一样吗?这个我不太确定啊?给信号加汉宁窗测得的误差应该比矩形窗要小才对啊,可是这样加窗后,矩形窗比汉宁窗的小,所以我就想是不是这样加窗不对

yangzj 发表于 2006-8-31 21:06

是一样的.
你是在什么情况下要小呢

happytaotao 发表于 2006-8-31 22:19

这个汉宁窗测得的信号频率和幅值比矩形窗要接近实际值,这个是理论上验证了的,这个还分什么情况吗?

happytaotao 发表于 2006-8-31 22:21

N=1024;
fs=8000;
n=0:N-1;
t=n/fs;
x=10*sin(2*pi*820*t);
w=hanning(512);
w1=;
x=x.*w1';
y=abs(fft(x));
mag=2*abs(y(1:1:512))/N;
k=0:1:511;
f=k*fs/N;
stem(f,mag)
grid

这个程序加了汉宁窗测得的数值就比矩形窗的大啊

happytaotao 发表于 2006-8-31 22:22

不是,刚才程序传错了是这个,不好意思啊
N=512;
fs=8000;
n=0:N-1;
t=n/fs;
x=10*sin(2*pi*820*t);
w=hanning(512);
x=x.*w';
y=abs(fft(x));
mag=2*abs(y(1:1:256))/N;
k=0:1:255;
f=k*fs/N;
stem(f,mag)
grid

yangzj 发表于 2006-9-1 09:05

是这样的,加汉宁窗主要是减小频率间的干涉问题.加汉宁窗本身会使幅值减小,因此要求得频率处的幅值应该在直接FFT的结果上要乘上幅值恢复系数.如果不是整周期采样的话则是按汉宁窗做频谱校正.

happytaotao 发表于 2006-9-1 14:00

你还是不太明白我的意思,我知道加窗在非整周期的情况下,会出现误差。我的意思是在这种情况下,理论上应该是hanning窗的误差比矩形窗小,可是按我传的程序来看,是hanning窗的误差大啊

yangzj 发表于 2006-9-1 20:30

上面提到了,加汉宁窗主要是减小频率间的干涉问题.比较误差你要先把加hanning窗的幅值乘上幅值恢复系数(hanning窗为2)后再比较.如果你要看加hanning窗的优点的话,你的信号可设成两个频率很近的正弦信号的和,或者设成一个很低的频率.

happytaotao 发表于 2006-9-2 09:08

恩,谢谢你啊

happytaotao 发表于 2006-9-2 09:11

可是为什么汉宁窗的就要恢复幅值系数?矩形窗不用呢?那是不是所有的窗,除了矩形窗,全部都要恢复系数?

yangzj 发表于 2006-9-2 09:15

hanning窗是一个钟形窗,从能量上来看加hanning窗能量变小了(实际上能量恢复系数是8/3).
加其它窗也要相应的考虑恢复系数.

happytaotao 发表于 2006-9-2 10:18

你之前说,加汉宁窗主要是减小频率间的干涉问题,信号可设成两个频率很近的正弦信号的和,这个很近的前提也是要大于频率分辨率吧?

yangzj 发表于 2006-9-2 10:21

原帖由 happytaotao 于 2006-9-2 10:18 发表
你之前说,加汉宁窗主要是减小频率间的干涉问题,信号可设成两个频率很近的正弦信号的和,这个很近的前提也是要大于频率分辨率吧?

得大于两个频率分辨率,hanning窗的主瓣的一半是两个频率分辨率,旁瓣衰减很快
页: [1] 2 3
查看完整版本: 怎么直接对信号加除矩形窗以外的窗?