资源简介

MATLAB(2018rb版本),将信号经过HHT变换后,求出时频谱和边际谱,可参考博文:希尔伯特黄变换(HHT)原理、求时频谱、边际谱,及MATLAB(2018rb)实现

资源截图

代码片段和文件信息

clc
clear
load signal.mat
%% 输入数据
ts = 0:0.001:0.3;

fs = 1000;
x = cos(2*pi*20*ts) + 2*cos(2*pi*100*ts);
N = length(x);

%% EMD和HT
figure()
emd(x);
[imfresidualinfo]=emd(x‘Interpolation‘‘pchip‘‘Display‘0);
figure()
hht(imffs);
% 横轴表示时间、纵轴表示频率,颜色表示能量
[hs f t imfinsf imfinse] = hht(imffs);
% hs——信号的希尔伯特谱(Hilbert Spectrum )
% f——信号的频率向量(Frequency vector of signal)
% t——信号的时间向量(Time vector of signal)
% imfinsf——每个imf的瞬时频率(instantaneous frequency of each imf)
% imfinse——每个imf的瞬时能量(instantaneous energy of each imf)
[mn] = size(hs);
l = size(imf2);

% 画出所有imf函数。
figure()
for i = 1:l
    plot(1:nimfinsf(:i));
    hold on;
end

%% 由于HHT变换,得到的时频谱hs是错误排列,所以需要重建时频谱
% 重建思路:HHT变换得到每一条imf的瞬时频率向量,和对应的瞬时能量向量
% f = (0:m-1)/(m-1)*(fs/2),这个是记录每一个点的记录频率,反向操作,

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     508741  2020-03-10 16:39  HHT变换思想与malab实现.docx

     文件       1776  2020-03-10 16:38  HHT.m

----------- ---------  ---------- -----  ----

               510517                    2


评论

共有 条评论