0

我使用Time-Frequency Toolbox中的函数 tfrwv.m 运行

[B,T,F] = tfrwv(data, 1:length(data), length(data), 1);
B(1:130, :) = 0;    % remove the duplicate part of the distribution
imagesc(T, F, abs(B));
colormap(hot);
xlabel('t [s]');
ylabel('f [Hz]');

我明白了

在此处输入图像描述

频率应在 [0,180] Hz 和时间 [0,2.5s] 内。

您如何将时间和频率缩放到实际值?

手册说

%TFRWV  Wigner-Ville time-frequency distribution.
%   [TFR,T,F]=TFRWV(X,T,N,TRACE) computes the Wigner-Ville distribution
%   of a discrete-time signal X, 
%   or the cross Wigner-Ville representation between two signals. 
% 
%   X     : signal if auto-WV, or [X1,X2] if cross-WV.
%   T     : time instant(s)          (default : 1:length(X)).
%   N     : number of frequency bins (default : length(X)).
%   TRACE : if nonzero, the progression of the algorithm is shown
%                                    (default : 0).
%   TFR   : time-frequency representation. When called without 
%           output arguments, TFRWV runs TFRQVIEW.
%   F     : vector of normalized frequencies.
%
%   Example :
%    sig=fmlin(128,0.1,0.4); tfrwv(sig);
% 

我跑

[B,T,F] = tfrwv(data, 1:length(data), length(data), hamming(length(data)/10), hamming(length(data)/4));

我得到

Error using tfrwv
Too many input arguments.

Error in flow_wv (line 8)
    [B,T,F] = tfrwv(data, 1:length(data), length(data),
    hamming(length(data)/10), hamming(length(data)/4));

我认为这里的问题是初始化时间和频率的窗口。我试图通过编辑参数的值来操纵这两个轴。

由 Matlab 的默认频谱图函数完成的相同数据但具有正确标签轴的相应频谱图,在此处讨论:

在此处输入图像描述

4

2 回答 2

2

我认为tfrwv相当于spectrogram如果您使用以下命令。

时间间隔为t = 1/360。选择fs = 360.5

imagesc(T*t, F*fs, abs(B)); 

有更多的峰值tfrwv可能是因为窗口大小和重叠与您使用的不同spectrogram

结果

在此处输入图像描述

于 2013-12-24T15:24:10.887 回答
2

Wigner-Ville 分布中没有重叠的概念。这仅适用于 STFT 和作为 STFT 平方模数的频谱图。

“tfrwv”(以及 TFTB 中的所有 TFR 计算)的结果采用标准化频率单位。如果不提供采样频率\速率,您将无法获得频率和秒数的单位。

这是太多的输入参数。

[B,T,F] = tfrwv(data, 1:length(data), length(data), hamming(length(data)/10), hamming(length(data)/4));

有三个输出参数和最多四个输入参数,所以是的,给它五个会引发错误。此外,第四个输入参数是一个用于打开跟踪的布尔值,它只是在计算时将一些进度信息打印到 Matlab 命令窗口。

只是为了进行现实检查tfrwv,在没有输出参数的情况下进行调用(即>> tfrwv(blah, blah);),这将导致它调用tfrqview菜单驱动的绘图工具。菜单中的选项之一是更改采样频率(在 Matlab 命令提示符下以赫兹为单位输入采样频率),它将更新图形以在 y 轴上具有实际频率,在 x 轴上具有时间。否则,默认值是归一化频率,y 轴实际上是以样本为单位的时间。

要手动执行此操作,您将需要使用 3D“绘图”,您可以在其中使用采样率将TF向量转换为真实时间和真实频率,而不是样本和归一化频率(归一化频率为 [0 0.5])。然后TFR用于对z轴应用颜色,即>>imagesc(T.*1/Fs, F.*Fs, TFR);

TFTB 是一个很棒的工具箱,其中包含我从开源第三方 Matlab 工具箱中看到的最好的文档。在其中挖掘“refguide.pdf”和“tutorial.pdf”。

于 2014-12-19T17:47:56.530 回答