How to get the frequency,time and energy data sets of wavelet and hht?
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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.
0 Kommentare
Antworten (1)
Nithin
am 18 Dez. 2023
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.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Signal Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!