【问题标题】:Plotting 2D Hilbert Spectrum in MATLAB在 MATLAB 中绘制二维希尔伯特谱
【发布时间】:2016-02-08 01:34:10
【问题描述】:

我想创建希尔伯特谱的二维图。我想要的是时间与频率图,其中信号的幅度由图中的颜色变化表示。

我所做的是this,但我需要它看起来像this

提前谢谢你

编辑:

我有随时间变化的幅度和瞬时频率值,这是我使用 Hilbert Huang 变换产生的。 假设我们只使用第一个 IMF,我们有 100 个样本。那么我们拥有的是:

    instantaneous_frequency = [f1 f2 f3 ... f100]
    instantaneous_amplitude = [a1 a2 a3 ... a100]
    time = [t1 t2 t3 ... t100]

我需要的是一种像第二张图像一样绘制它们的方法,而不使用频谱图功能,因为它使用 STFT 并且我已经应用了 HHT。

生成第一个图的代码是:

Time_Window = 1:101;
signal= rand(1,101);
hilb = hilbert(signal);
inst_amp = abs(hilb);
inst_th = angle(hilb);
inst_freq = diff(a_inst_th)/(1/256)/(2*pi); %instantaneous frequency 
%inst_freq = remove_outliers(inst_freq,Time_Window(1:end-1)); 
inst_freq(end+1) = inst_freq(end); % This is done due to diff()
plot(Time_Window*4,inst_freq,'k.','MarkerSize',5)

【问题讨论】:

  • 发布您所做工作的代码将有助于您实现目标...
  • 在问题中添加了示例代码! :)

标签: matlab plot spectrum


【解决方案1】:

已经有一个 MATLAB 函数可以生成 spectrogram,它看起来很像您想要的。看看能不能解决你的问题。

【讨论】:

  • 不幸的是,频谱图使用 STFT 来查找频谱。我已经有了使用 Hilbert-Huang 变换产生的频率、幅度和时间的值。我需要的是一种像第二张图片一样绘制它们的方法。
  • 在这种情况下,您可以使用 pcolor:mathworks.com/help/matlab/ref/pcolor.html 适当设置颜色图,您可能不想要边缘颜色。
  • 感谢您的回答。我尝试使用 pcolor,但无法使其工作。我所做的是pcolor(Time_Window*4,a_inst_freq,diag(a_inst_amp)),我得到的是this
猜你喜欢
  • 2012-08-10
  • 2017-08-31
  • 2018-08-16
  • 1970-01-01
  • 2010-09-11
  • 2019-10-16
  • 1970-01-01
  • 2022-10-01
  • 1970-01-01
相关资源
最近更新 更多