How to get the frequency,time and energy data sets of wavelet and hht?

조회 수: 6 (최근 30일)
JOYA GHOSH DASTIDER
JOYA GHOSH DASTIDER 2022년 3월 12일
답변: Nithin 2023년 12월 18일
Hi, I have got the wavelet plot and hht plot of my raw data. Now I want to get the frequency, time and energy data of those wavelet and hht plot such that I can reproduce those plots at a later time using those data and it is required for my other calculations as well... For hht I have seen that sparsh array and for wavelet also get a matrix.but how to know which one is frequency data and which one is time or energy data. And I need to save these datas in a file.how to do that? Thank you.

답변 (1개)

Nithin
Nithin 2023년 12월 18일
Hi Joya,
I understand that you want to extract the frequency, time and energy data from wavelet and HHT (Hilbert-Huang Transform) plots in MATLAB.
To extract the above components from wavelet plot, kindly use the "cwt" function which performs coninuous wavelet transform and returns a matrix where each row corresponds to a frequency and each column corresponds to a time point.
t = 0:0.001:1;
data = cos(2*pi*50*t) + cos(2*pi*100*t); % sample data
Fs = 1000;
[wt, f] = cwt(data, 'amor', Fs); % considering 'amor' as the example wavelet
% 'wt' is the complex wavelet coefficients matrix
% 'f' is the frequency array corresponding to the rows of 'wt'
% Calculating the wavelet power spectrum (energy):
power = abs(wt).^2;
% Time array:
t = (0:length(data)-1)/Fs;
% Saving the time, frequency, and energy data to a file:
save('wavelet_data.mat', 't', 'f', 'power');
To extract the above components from HHT plot, kindly perform HHT using EMD (Empirical Mode Decomposition) and Hilbert spectral analysis as shown in the following code snippet :
% Performing EMD on the data:
imfs = emd(data);
% Pre-allocating arrays for time, frequency and energy:
inst_freq = [];
inst_energy = [];
t = (0:length(data)-1)/Fs;
% Looping through each IMF to perform Hilbert transform and extract data:
for i = 1:size(imfs, 2)
h = hilbert(imfs(:, i));
inst_energy(:, i) = abs(h).^2; % Instantaneous energy
inst_freq(:, i) = Fs/(2*pi)*diff(unwrap(angle(h))); % Instantaneous frequency
end
% Saving the time, frequency, and energy data to a file:
save('hht_data.mat', 't', 'inst_freq', 'inst_energy');
For more information regarding "cwt", "emd" and "hilbert" functions in MATLAB, kindly refer to the following documentation:
I hope this answer helps you.
Regards,
Nithin Kumar.

카테고리

Help CenterFile Exchange에서 Signal Analysis에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by