This example shows that small signal shifts do not significantly change the distribution of energy among the DTCWT coefficients at different scales.
Load an ECG signal. The signal has 2048 samples.
load wecglen = numel(wecg);plot(wecg)axis tight
Create two 1-by-3000 zero vectors. Insert the ECG signal into different segments of each zero vector.
shift1 = 328;shift2 = 368;vec1 = zeros(1,3000);vec2 = zeros(1,3000);vec1(shift1+[1:len]) = wecg;vec2(shift2+[1:len]) = wecg;
Obtain the dual-tree transform of both vectors. Use default settings.
[a1,d1] = dualtree(vec1);[a2,d2] = dualtree(vec2);
Compute the energy at each scale for both decompositions. Note that the energy distribution of the shifted signals across all scales remains approximately the same.
energy1 = cell2mat(cellfun(@(x)(sum(abs(x).^2)),d1,'uni',0));energy2 = cell2mat(cellfun(@(x)(sum(abs(x).^2)),d2,'uni',0));levels =cell(numel(energy1),1);for k=1:numel(energy1) levels{k} = sprintf('Level %d',k);endenergies = table(levels,energy1,energy2)
energies=11×3 table levels energy1 energy2 ____________ _______ _______ {'Level 1' } 16.014 16.014 {'Level 2' } 19.095 19.095 {'Level 3' } 35.99 35.99 {'Level 4' } 25.141 25.065 {'Level 5' } 16.81 17.452 {'Level 6' } 9.7078 9.161 {'Level 7' } 2.3201 2.0513 {'Level 8' } 8.3808 8.4197 {'Level 9' } 23.006 22.56 {'Level 10'} 70.764 73.964 {'Level 11'} 64.097 59.022
联系客服