首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Wigner分布到实际范围的Matlab标度值

从Wigner分布到实际范围的Matlab标度值
EN

Stack Overflow用户
提问于 2013-12-23 20:26:06
回答 2查看 1.6K关注 0票数 0

我使用时频工具箱中的tfrwv.m函数运行

代码语言:javascript
复制
[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。

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

手册上说

代码语言:javascript
复制
%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);
% 

我就跑了

代码语言:javascript
复制
[B,T,F] = tfrwv(data, 1:length(data), length(data), hamming(length(data)/10), hamming(length(data)/4));

我得到了

代码语言:javascript
复制
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的默认谱图函数对同一数据进行相应的谱图,但用右标号的轴来表示,讨论这里

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-24 15:24:10

如果使用以下命令,我认为tfrwv等同于spectrogram

时间间隔是t = 1/360.选择fs = 360.5

代码语言:javascript
复制
imagesc(T*t, F*fs, abs(B)); 

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

结果

票数 2
EN

Stack Overflow用户

发布于 2014-12-19 17:47:56

Wigner分布中没有重叠的概念.这仅适用于STFT和光谱图,即STFT的平方模量。

“tfrwv”(以及TFTB中的所有TFR计算)的结果都是归一化频率单位。如果不提供采样频率\速率,就无法获得频率和秒的单位。

输入参数太多了。

B,T,F=tfrwv(数据,1:长度(数据),长度(数据),hamming(长度(数据)/10),hamming(长度(数据)/4));

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

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

要做到这一点,您将需要使用一个三维“图”,在这里,您可以使用采样率来转换TF向量为真实时间和真频率,而不是样本和归一化频率(归一化频率为0 0.5)。然后,使用TFR对z轴(即>>imagesc(T.*1/Fs, F.*Fs, TFR); )应用颜色。

TFTB是一个非常棒的工具箱,它是我从开源第三方Matlab工具箱中看到的最好的文档。在里面挖"refguide.pdf“和"tutorial.pdf”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20750660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档