lsq001 发表于 2008-12-4 13:08

对暂态信号分析用stft在matlab里怎么实现

最近看了一些关于stft对信号分析的matlab程序,不过对于怎么提取相应频率的分量一直不是很清楚,应该用什么函数,请指点。另外窗函数的选取有什么原则么?

[ 本帖最后由 lsq001 于 2008-12-4 13:10 编辑 ]

lsq001 发表于 2008-12-4 14:48

我有一个信号如下v,采样率为6400,对其进行分析,程序如下:
N=length(v)
w=hanning(N);v=v.*w';
y=fft(v,N);
mag=abs(y)*2/N;
f=(0:length(y)-1)'*6400/length(y);
figure;
plot(f(1:N/2),mag(1:N/2));
axis();
xlabel('频率(Hz)');ylabel('幅值');
grid;


出错信息为Error using ==> times
Matrix dimensions must agree.

请问怎么回事?

songzy41 发表于 2008-12-4 16:46

若按上程序按FFT分析,把v=v.*w';改为v=v.*w;就不出错了。
若要STFT的方法分析,可用tfrstft函数。

lsq001 发表于 2008-12-5 09:10

谢谢。
那请问怎么使用tfrstft,得出的结果应怎么提取各次谐波幅值等信息呢?

songzy41 发表于 2008-12-5 11:33

本帖最后由 VibInfo 于 2016-10-17 14:38 编辑

原帖由 lsq001 于 2008-12-5 09:10 发表
那请问怎么使用tfrstft,得出的结果应怎么提取各次谐波幅值等信息呢?
从tfrstft分析得的结果是一个时间与频率的函数,对于暂态信号来说,各个频率的分量都是随时间变化的。若要分析各次谐波幅值,只能取来一帧一帧,分别进行分析。

lsq001 发表于 2008-12-6 10:18

谢谢
上面说的一帧一帧的指的是多少数据量?
分别进行分析是说按时间分段分析么?
具体是怎么做的呢?

songzy41 发表于 2008-12-6 15:56

本帖最后由 VibInfo 于 2016-10-17 14:38 编辑

原帖由 lsq001 于 2008-12-6 10:18 发表
谢谢
上面说的一帧一帧的指的是多少数据量?
分别进行分析是说按时间分段分析么?
具体是怎么做的呢?
在tfrstft调用时:
=tfrstft(x,t,N,h)
其中h是窗函数,它实际上就是每次取一段多长,N是每次作FFT的长度。

sjh2100 发表于 2011-11-17 09:09

tfrstft这个函数的原理是和stft原理一样吗?其中做了哪些处理,请教授指教。谢谢
页: [1]
查看完整版本: 对暂态信号分析用stft在matlab里怎么实现