关于tftb工具箱,请大侠们帮忙
我用其中的tfrsp函数提取一组信号的频率,我是按着里面给的demo写的tfrsp(Xrs',tts,256,tftb_window(61,'Hanning'),1);
但是总是出错
??? Subscript indices must either be real positive integers or logicals.
Error in ==> tfrsp at 87
tfr(indices,icol)=x(ti+tau).*conj(h(Lh+1+tau))/norm(h(Lh+1+tau));
我看了一下,里面的indices是从2到31,是正数。
我不明白到底哪里出问题了。
还有就是函数instfreq(Xrs,tts)提取频率时候,提取出来的频率就两个值。无法像例子中能提取出连续的频率。
我用的是在网上下的tftb工具箱里面的函数。
我把数据传上来,大虾们帮我看一看吧。
谢谢了
[ 本帖最后由 2365215 于 2008-5-1 23:12 编辑 ] 在函数
=TFRSP(X,T,N,H,TRACE)
中的T,不是实际的时间,它的解释是
T : time instant(s) (default : 1:length(X)).
所以在楼主调用中用了实际的时间序列,所以出了错。可用1:2001。 谢谢了,我试一试
这里的time instant(s)是什么意思? 太好,至少现在我看到结果了
非常感谢2楼的,谢谢了。 不过现在我还是有疑问
变换的时候用的t是1:2001,
那变换出来的频率是不是我还要处理一下,也就是说程序默认的数据点是一秒一个
如果我的采样频率是32hz,那么程序得到的频率要乘以32才是真实的频率? 本帖最后由 wdhd 于 2016-9-10 14:39 编辑
原帖由 2365215 于 2008-5-2 22:48 发表
不过现在我还是有疑问
变换的时候用的t是1:2001,
那变换出来的频率是不是我还要处理一下,也就是说程序默认的数据点是一秒一个
如果我的采样频率是32hz,那么程序得到的频率要乘以32才是真实的频率?
对的,TFRSP给出的是归一化的频率,在实际作图时,要把函数给出的频率f乘以你的采样频率。 输出频率是f,还是那个tfr啊?
如果我想得到信号的频率的曲线应该如何处理呢?
这里就先考虑幅值最大的频率最为输出的频率.
我看计算后tfr的结果为120*2001的矩阵。是不是每一行为一个频率点对应的幅值,每一列为相对时间对应的幅值?
如果是这样的话,每一行对应的频率点是多少呢,如何设置?
[ 本帖最后由 2365215 于 2008-5-3 18:17 编辑 ] 输出频率是f,不是那个tfr,tfr是时间t和频率f的函数,是一个复数值。它是每一行为一个频率点对应的幅值,每一列为相对时间对应的幅值。把f乘以fs就是实际频率值。 tfr每一行对应的频率是怎么来的呢?
我看计算出的tfr都是正实数啊,里面没有复数。
我是这么算的、:
=tfrsp(Xrs',1:2001,120,tftb_window(61,'Hanning'),1)
freq1=f'*tfr;
plot (freq1, 'DisplayName', 'freq1', 'YDataSource', 'freq1'); figure(gcf);
结果的图看起来也不对啊。 原帖由 2365215 于 2008-5-3 20:43 发表 http://www.chinavib.com/forum/images/common/back.gif
tfr每一行对应的频率是怎么来的呢?
我看计算出的tfr都是正实数啊,里面没有复数。
我是这么算的、:
=tfrsp(Xrs',1:2001,120,tftb_window(61,'Hanning'),1)
freq1=f'*tfr;
plot (freq1, 'DisplayName', 'freq1', 'YDataSource', 'freq1'); figure(gcf);
结果的图看起来也不对啊。
抱歉,我搞错了,tfr是实数,不是复数。在楼主程序中freq1=f'*tfr;代表什么意思,不明白。给楼主一参考程序:
h=hanning(63);
=tfrsp(Xrs,1:2001,120,h);
imagesc(t/fs,f(1:60)*fs, tfr(1:60,:));
axis('xy')
xlabel('Time (Second)'); ylabel('Frequency (Hz)');
title('Time-Frequency Spectrum')
得的图如下。
[ 本帖最后由 eight 于 2008-5-5 15:12 编辑 ] 非常感谢,我研究研究。
你程序里面的fs是采样频率吧
有不懂之处我再向你讨教。
[ 本帖最后由 2365215 于 2008-5-4 08:58 编辑 ] tfrsp 函数能不能求信号的相位?
或者说能不能求两个信号的相位差? tfrsp 函数不能求信号的相位,因为求出的tfr是STFT的模平方。楼主如果要求相位的话,可用STFT分析。 谢谢了
非常感谢songzy41对我这么多问题的耐心解答。 变换的结果tfr中的值是一个什么量?
这个幅值的物理意义又是什么?
如果在某一列中某个值最大,代表着这个值对应的频率在这个时刻所占的比重最大,也就是说这个对应的频率是信号的主要成分?
页:
[1]
2