hht函数

hht

希尔伯特-黄变换

官方文档

语法

hs = hht(imf)		% 返回由固有模式函数imf指定的信号的Hilbert谱hs,横坐标为采样数(个)
% hs用于分析由光谱含量随时间变化的信号的混合组成的信号。利用hht对信号进行Hilbert谱分析以识别局部特征。
hs = hht(imf,fs)	% 返回以fs速率采样的信号的Hilbert谱hs,横坐标为时间(s)
[hs,f,t] = hht(___) % 返回除hs之外的频率向量f和时间向量t。这些输出参数可以与前面的输入语法一起使用
[hs,f,t,imfinsf,imfinse] = hht(___) % 还返回用于信号诊断的本征模函数的瞬时频率imfinsf和瞬时能量imfinse
[___] = hht(___,Name,Value) % 用一个或多个名称、值对参数指定的附加选项估计Hilbert谱参数
hht(___)					% 在当前图形窗口中绘制希尔伯特谱
hht(___,freqlocation)		% 用可选的freqlocation参数绘制Hilbert频谱,以指定频率轴的位置。
							% 默认情况下,频率在y轴上表示。

输入参数

  • imf-本征模函数

    矩阵 | 时间表

    固有模式函数,用矩阵或时间表来表示。imf是包络线对零对称且极值和过零次数最多相差1的任何信号。emd用于将复杂信号分解和简化为有限个本征模式函数,以进行Hilbert谱分析。

  • fs — 采样率

    2π(默认)| 正标量

    采样率,指定为正标量。如果不提供fs,则使用2π的归一化频率来计算Hilbert谱。如果imf被指定为时间表,则从中推断出抽样率。

  • freqlocation-频率轴在绘图上的位置

    y轴(默认)| x轴

    频率轴在绘图上的位置,指定为“yaxis”或“xaxis”。要在绘图的y轴或x轴上显示频率数据,请分别将freqlocation指定为“yaxis”或“xaxis”。

Name-Value参数

指定名称、值参数的可选逗号分隔对。Name是参数名,Value是相应的值。名称必须出现在引号内。可以按任意顺序指定多个名称和值对参数,如Name1,Value1,…,NameN,ValueN。

  • FrequencyLimits - 计算Hilbert谱的频率限制

    [0,fs/2](默认)| 1/2整数值向量

    计算Hilbert谱的频率限制,指定为逗号分隔对,由“FrequencyLimits”和1/2整数值向量组成。频率限制以赫兹为单位。

  • FrequencyResolution - 离散频率范围的频率分辨率

    (f_high-f_low)/100 (default) | 正标量

    频率分辨率离散频率限制,指定为逗号分隔对,由“FrequencyResolution”和正标量组成。以赫兹为单位指定频率分辨率。如果未指定“FrequencyResolution”,则从FrequencyLimits推断值(fhigh flow)/100。这里,fhigh是频率限制的上限,flow是下限。

  • MinThreshold - 希尔伯特谱的最小阈值

    -inf (default) | 标量

    希尔伯特谱的最小阈值,指定为由“MinThreshold”和标量组成的逗号分隔对。当10log的对应元素为0时,MinThreshold将hs的元素设置为010(hs)小于最小阈值。

输出参数

  • hs — 信号的希尔伯特谱

    稀疏矩阵

    信号的希尔伯特谱,返回为稀疏矩阵。使用hs进行时频分析并识别信号中的局部特征。

  • f — 频率值

    矢量

    信号的频率值,以向量形式返回。hht使用频率向量f和时间向量t来创建Hilbert谱图。从数学上讲,f表示为:f=流量:fres:fhigh,其中fres是频率分辨率。

  • t - Time values

    向量 | 持续时间数组

    信号的时间值,以向量或持续时间数组的形式返回。hht使用时间向量t和频率向量f来创建Hilbert谱图。

    • 如果imf被指定为数组,则t返回为一个数组。
    • 如果imf被指定为统一采样的时间表,则t返回为持续时间数组。
  • imfinsf - 各IMF瞬时频率

    向量 | 矩阵时间表

    每个IMF的瞬时频率,以向量、矩阵或时间表的形式返回。

    • 如果imf被指定为向量,则imfinsf 返回为一个向量。
    • 如果imf被指定为矩阵,则imfinsf 返回为 矩阵。
    • 如果imf被指定为统一抽样时间表,则imfinsf 返回为时间表。
  • imfinse - 各IMF瞬时能量

    向量 | 矩阵时间表

    每个IMF的瞬时能量,以向量、矩阵或时间表的形式返回。

    • 如果imf被指定为向量,则imfinsf 返回为一个向量。
    • 如果imf被指定为矩阵,则imfinsf 返回为 矩阵。
    • 如果imf被指定为统一抽样时间表,则imfinsf 返回为时间表。

示例

e1. 二次Chirp信号的Hilbert谱

产生高斯调制的二次Chirp信号。指定采样率为2 kHz,信号持续时间为2秒 。

fs = 2000;
t = 0:1/fs:2-1/fs;
q = chirp(t-2,4,1/2,6,'quadratic',100,'convex').*exp(-4*(t-1).^2);
plot(t,q)

​


利用emd来可视化本征模函数(imf)和残差。

emd(q)

在这里插入图片描述

计算信号的IMFs。使用“Display”名称-值对输出一个表,显示每个IMF的筛选迭代次数、相对公差和筛选停止条件。

imf = emd(q,'Display',1);

Current IMF | #Sift Iter | Relative Tol | Stop Criterion Hit
1 | 2 | 0.0063952 | SiftMaxRelativeTolerance
2 | 2 | 0.1007 | SiftMaxRelativeTolerance
3 | 2 | 0.01189 | SiftMaxRelativeTolerance


利用计算的本征模函数绘制二次hirp信号的Hilbert谱。限制频率范围从0赫兹到20赫兹。

hht(imf,fs,'FrequencyLimits',[0 20])

在这里插入图片描述

e2. 进行经验模式分解并可视化信号的Hilbert谱

加载并显示由频率变化明显的正弦波组成的非平稳连续信号。手提钻的振动和烟花的声音是非平稳连续信号的示例。信号以一定速率采样 f s fs fs

load('sinusoidalSignalExampleData.mat','X','fs')
t = (0:length(X)-1)/fs;
plot(t,X)
xlabel('Time(s)')

在这里插入图片描述

混合信号包含具有不同幅度和频率值的正弦波。

要创建希尔伯特频谱图,您需要信号的本征模式函数(IMF)。执行经验模式分解,以计算信号的IMF和残差。由于信号不平滑,因此将 'pchip' 指定为插值方法。

[imf,residual,info] = emd(X,'Interpolation','pchip');

在这里插入图片描述

利用经验模态分解得到的imf分量,创建Hilbert谱图。

hht(imf,fs)

在这里插入图片描述

频率与时间的关系图是一个稀疏的关系图,带有一个垂直的色条,指示IMF中每个点的瞬时能量。该图表示从原始混合信号分解的每个分量的瞬时频谱。三个IMF出现在图中,频率在1秒时发生明显变化。

e3. 计算信号的Hilbert谱参数

加载并可视化由频率明显变化的正弦波组成的非平稳连续信号。手提钻的振动和烟花爆竹声都是非平稳连续信号的例子。信号以fs的速率采样。

load('sinusoidalSignalExampleData.mat','X','fs')
t = (0:length(X)-1)/fs;
plot(t,X)
xlabel('Time(s)')

在这里插入图片描述

要计算Hilbert谱参数,需要信号的IMFs。进行经验模态分解以计算信号的固有模态函数和残差。由于信号不平滑,请指定“pchip”作为插值方法。

[imf,residual,info] = emd(X,'Interpolation','pchip');

在命令窗口中生成的表指示每个生成的IMF的sift迭代次数、相对公差和sift停止标准。此信息也包含在“信息”中。可以通过将“Display”指定为0来隐藏表。

计算Hilbert谱参数:Hilbert谱hs、频率矢量f、时间矢量t、瞬时频率imfinsf和瞬时能量imfinse。

[hs,f,t,imfinsf,imfinse] = hht(imf,fs);

利用计算出的Hilbert谱参数进行时频分析和信号诊断。

e4.多分量信号的VMD

生成由频率为2赫兹、10赫兹和30赫兹的三个正弦波组成的多分量信号。正弦波在1 kHz下采样2秒。将信号嵌入方差为0.01²的高斯白噪声中。

fs = 1e3;
t = 1:1/fs:2-1/fs;
x = cos(2*pi*2*t) + 2*cos(2*pi*10*t) + 4*cos(2*pi*30*t) + 0.01*randn(1,length(t));

计算噪声信号的本征模函数,并将其可视化为三维图形。

imf = emd(x);
[p,q] = ndgrid(t,1:size(imf,2));
plot3(p,q,imf)
grid on
xlabel('Time Values')
ylabel('Mode Number')
zlabel('Mode Amplitude')

利用计算的内模函数绘制多分量信号的Hilbert谱。将频率范围限制在[0,40]赫兹。

hht(imf,fs,'FrequencyLimits',[0,40])

在这里插入图片描述

??? 这里发现实际图像和帮助手册上边的图像不一致

  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ruoyo176

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值