在 MATLAB 中绘制二维希尔伯特谱
Posted
技术标签:
【中文标题】在 MATLAB 中绘制二维希尔伯特谱【英文标题】:Plotting 2D Hilbert Spectrum in 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)
【问题讨论】:
发布您所做工作的代码将有助于您实现目标... 在问题中添加了示例代码! :) 【参考方案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。以上是关于在 MATLAB 中绘制二维希尔伯特谱的主要内容,如果未能解决你的问题,请参考以下文章