声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1574|回复: 5

[综合讨论] 短时傅立叶变换的适用范围问题

[复制链接]
发表于 2007-7-30 21:12 | 显示全部楼层 |阅读模式

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

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

x
请问:对信号是复数的,可以进行短时傅立叶变换吗?

[ 本帖最后由 eight 于 2007-7-31 14:30 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-7-30 23:47 | 显示全部楼层
将实部和虚部分别存储,自己设计复数的相关运算。我接触的除了matlab,Mathematica 等数学软件编程不需要考虑复数运算问题外,vb,vc,c都要自己编写复数的运算,必要的时候可以定义新的数据类型(复数)。
 楼主| 发表于 2007-7-31 05:14 | 显示全部楼层
我在一篇论文中的看到一算法
1.构造一函数:g(t)=(2*pi*(cmax)^2)^(1/4)*exp(((t-tp).^2)/(4*(cmax)^2)).*exp(j*m0/2*(t-tp).^2);   m0,tp,cmax是已知值 ;
2.将原信号x(t)经过运算xc(t)=x(t)*g*(t)
3.再对xc(t)做短时傅立叶变换.

我在matlab中这样试了下:
x=randn(1,5000);
t1=1:30;
y=20*sin(t1*0.1*pi);
for k=1:4
    x(1000*k-14:1000*k+15)=x(1000*k-14:1000*k+15)+0.2*y;
end  
t=1:1:length(x);
m0=1.6;
tp=length(x)/2;
cmax=10 ;
g(t)=(2*pi*(cmax)^2)^(1/4)*exp(((t-tp).^2)/(4*(cmax)^2)).*exp(j*m0/2*(t-tp).^2);
g1(t)=conj(g(t));
xc(t)=x(t).*g1(t);
[STFT_xc,f,t] =specgram(xc,length(x),fs,kaiser(256,5),220);
结果没有出错,但是最后STFT_xc的值全都是nan+,nani.

请问这是什么原因,谢谢!

[ 本帖最后由 orchis_2005 于 2007-7-31 08:30 编辑 ]
发表于 2007-7-31 07:10 | 显示全部楼层
分步检查结果,估计是高斯算子有问题
 楼主| 发表于 2007-7-31 08:34 | 显示全部楼层
检查了,没有哪一步出错.
高斯算子对了好几边,跟论文中给定的一样!
就是找不出啊,
发表于 2007-7-31 08:35 | 显示全部楼层

回复 #1 orchis_2005 的帖子

楼主可以参考tftb时频工具箱中的tfrstft函数。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-12 09:58 , Processed in 0.065330 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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