声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2895|回复: 20

[FFT] FFT的实现过程问题

[复制链接]
发表于 2010-9-27 18:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 czk108 于 2010-9-27 18:28 编辑

对一信号加窗作FFT,加窗相当于信号乘以窗函数,FFT结果相当于信号的傅里叶变换与窗函数的傅里叶变换的卷积(时域相乘 频域卷积)
现在想通过信号谱与窗谱的卷积得到加窗信号的频谱    但是与信号加窗后做FFT得到的结果不同    是什么原因呢?    在MATLAB中信号加窗时用的是点乘,信号点数与窗长一样,FFT后频谱长度也一样。用谱卷积时存在卷积后点数增大的现象
该怎么在matlab中用卷积来实现信号加窗FFT的过程呢?还有就是窗谱中的w取值范围与长度N应该怎么选择?
谢谢大家   急求高手解答
回复
分享到:

使用道具 举报

发表于 2010-9-27 22:50 | 显示全部楼层
建议把你的代码贴出来。以便大家分析
发表于 2010-9-27 23:50 | 显示全部楼层
理论上来说,时域相乘等于频域卷积。但是实际上我们处理的有限信号都是加了矩形窗进行截断的。如果你要看加窗后对信号谱的影响,可以用整周期数据。比如:采样频率1000Hz,分析点数1024,信号频率1000/10.24Hz,做出来的频谱没有泄露,可以很明显的看到加窗的效果了。

评分

1

查看全部评分

 楼主| 发表于 2010-9-28 09:09 | 显示全部楼层
回复 songjianjiang 的帖子

我主要是想看用频域卷积得到的信号的频谱与直接用fft函数得到的频谱有什么区别,或者fft后频谱如何消除窗函数的影响?
谢谢
发表于 2010-9-28 09:28 | 显示全部楼层
实际上,这涉及到连续与离散的问题。你要看频域卷积后的信号的频域与直接用fft函数得到的频谱的区别,最好用连续信号从理论上分析。因为我们计算机处理的是DFT,而不是实际的FFT,在有些情况下还是有很大差别的。消除fft后频谱的窗函数的影响,你可以用频谱校正的办法,这是专门研究加窗对频谱影响的技术。
 楼主| 发表于 2010-9-29 09:10 | 显示全部楼层
我现在想用matlab仿真信号加窗后FFT得到的频谱和信号频谱与窗谱卷积得到的频谱是否一样,但是卷积这一块窗谱中参数w和窗长N怎么设置   跟什么有关不太明白
发表于 2010-9-29 09:39 | 显示全部楼层
不同的参数w和窗长N,会产生不同的窗谱,至于你要验证的仿真信号加窗后FFT得到的频谱和信号频谱与窗谱卷积得到的频谱是否一样,可以明确的说:理论上是一致的,实际计算总有一定的误差,当然比较小。你要验证的话:建议你用整周期数据,这样可以避免泄露带来的影响,而且看的比较直接。
 楼主| 发表于 2010-9-29 09:50 | 显示全部楼层
回复 songjianjiang 的帖子

就是不明白怎么选择w和N才能使得窗谱与加长N的窗是等效的    而且卷积的话结果数据长度会加长
发表于 2010-9-29 09:59 | 显示全部楼层
你用的是什么窗,代码贴出来啊!还有离散情况下,卷积肯定会使数据加长;在时域的情况下,我一般选择中间等长的数据。
 楼主| 发表于 2010-9-29 10:32 | 显示全部楼层
本帖最后由 czk108 于 2010-9-29 10:35 编辑

回复 songjianjiang 的帖子

r1=[8.68915 8.63756 8.58719 8.53810 8.49020 8.44344 8.39785 8.35339 8.31004 8.26774 8.22649 8.18629 8.14709 8.10885 8.07160 8.03530 8 8.03541 8.07171 8.10896 8.14719 8.18640 8.22660 8.26785 8.31015 8.35351 8.39796 8.44355 8.49032 8.53822 8.58732 8.63769 8.68928 ];
k=[0 0 0 0.0003 0.0009 0.0025 0.0062 0.0142 0.0302 0.0595 0.1086 0.1837 0.2876    0.4168 0.5594 0.6952 0.7998 0.6952 0.5594 0.4168 0.2876 0.1837 0.1086 0.0595 0.0302 0.0142 0.0062 0.0025 0.0009 0.0003 0.0003 0.0005 0.0007];
figure(1)
plot(r1,k);grid;
%窗谱设置
N=32;
w=-pi/2:.01:pi/2;
Wr=exp(-j*((N-1)/2)*w).*sin(N*w/2)./sin(w/2);
size(Wr)
figure(3)
plot(w,Wr);grid;
kk=conv(k,Wr);
size(kk)
figure(4)
plot(abs(kk));
想用图1得到的结果与窗谱进行卷积,窗谱不知道怎么设置。还有就是卷积的时候直接用的k和Wr卷积是有问题的吧   是不是要用k和r1之间的表达式和Wr卷积呢?在画图4时是否应该取abs呢   差距很大
发表于 2010-9-29 10:52 | 显示全部楼层
本帖最后由 songjianjiang 于 2010-9-29 10:53 编辑

刚才用代码测了一下,有几个问题,如下
1。你用的时域卷积,而不是频域卷积
2。你的时域数据太短了,远没有窗长,这是不合逻辑的
3。你究竟想验证什么,我没弄得清楚,整个过程我只理解为滤波,或者平滑,但是时域数据又比较短。
 楼主| 发表于 2010-9-29 11:01 | 显示全部楼层
回复 songjianjiang 的帖子

为什么是时域卷积呢?我把图1得到的图形当做是一个频谱图了,窗谱是直接带的公式,窗谱太长是因为不知道w的范围应该怎么取,还有就是间隔太大的话窗谱失真会很严重,因而选择间隔为0.01,导致窗谱的长度很长。图1的图形我是将他看做一个信号的频谱图的大概形状是那样,这样两个频谱进行卷积不是频域卷积吗?我不是很明白,谢谢
发表于 2010-9-29 11:21 | 显示全部楼层
Wr是个很明显的窗的形状,好像是指数窗,而且频谱一般都是复数,所以肯定是时域处理,和频谱没有一点关系,这一点毋庸置疑的。
 楼主| 发表于 2010-9-29 15:30 | 显示全部楼层
回复 songjianjiang 的帖子

Wr是矩形窗,它的公式就是矩形窗的频率特性公式。那你能不能告诉我就是怎么用卷积的方法来得到信号的频谱?3q
发表于 2010-9-29 15:49 | 显示全部楼层
不太理解你的意思,如果你想验证时域乘积=频域卷积,大可以选择任意一个窗函数,然后各做一下频谱,卷积一下,看看时域乘积的频谱同频域卷积的效果是否一致。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-7 04:34 , Processed in 0.071484 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表