资源简介
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
评论
共有 条评论