confused about dimensions of detailed cofficients when apply db3 of level 6

4 次查看(过去 30 天)
I have a cell array comprises of three cell with dimension of 868 by 16 of each cell. When i apply db3 with level 6 on each cell and safe detailed coefficient and approximate coefficient in an array corresponding to original data cells by using Matlab code shown below:
dwt_coeffs_struct = struct('A', cell(size(data)), 'D', cell(size(data)));
% Loop over each cell in the data array
for i = 1:numel(data)
% Convert the cell data to double and reshape it to a column vector
signal = reshape(cell2mat(data{i}), [], 1);
% Initialize arrays to store approximation coefficients and detail coefficients
A_coeffs = cell(1, 6);
D_coeffs = cell(1, 6);
% Perform the DWT for each level
for j = 1:6
[C, L] = wavedec(signal, j, 'db3');
% Store the approximation coefficients and detail coefficients separately
if j == 1
A_coeffs{j} = appcoef(C, L, 'db3', j);
end
D_coeffs{j} = detcoef(C, L, j);
end
% Store the DWT coefficients for this signal in the structure array
dwt_coeffs_struct(i).A = A_coeffs;
dwt_coeffs_struct(i).D = D_coeffs;
end
Than i got detiled cofficents D1=41666 by 1
D2=20835 by 1
D3=10420 by 1
D4=5212 by 1
D5=2608 by 1
D6=1306 by 1
Am i getting correct dimensions of these detailed coffinites ....Please guide so that i may further extract features from these detailed coefficients

回答(1 个)

Prathamesh
Prathamesh 2025-2-21
I understand that you have a cell array consisting of three cells, each with dimensions of 868 by 16. After applying a level 6 discrete wavelet transform (DWT) using the 'db3' wavelet on each cell, are the dimensions of the resulting detail and approximation coefficients correctly corresponding to the original data cells?
Here's a corrected version of your code with comments explaining the changes:
dwt_coeffs_struct = struct('A', cell(size(data)), 'D', cell(size(data)));
for i = 1:numel(data)
% Convert the cell data to double and reshape it to a column vector
signal = reshape(cell2mat(data{i}), [], 1);
% Perform the DWT for 6 levels using 'db3' wavelet
[C, L] = wavedec(signal, 6, 'db3');
% Initialize arrays to store approximation coefficients and detail coefficients
A_coeffs = cell(1, 6);
D_coeffs = cell(1, 6);
% Extract approximation coefficients at level 6
A_coeffs{6} = appcoef(C, L, 'db3', 6);
% Extract detail coefficients for each level
for j = 1:6
D_coeffs{j} = detcoef(C, L, j);
end
% Store the DWT coefficients for this signal in the structure array
dwt_coeffs_struct(i).A = A_coeffs;
dwt_coeffs_struct(i).D = D_coeffs;
end
for i = 1:numel(data)
fprintf('Detail Coefficients for signal %d:\n', i);
for j = 1:6
fprintf('D%d: %d by 1\n', j, length(dwt_coeffs_struct(i).D{j}));
end
end
Key Corrections:
Signal Reshaping : Ensure that each cell's data is reshaped to a column vector before applying the DWT. This step is crucial to maintain the integrity of the signal.
Coefficient Storage: Store the approximation coefficients only at the highest level (level 6). Store detail coefficients for each level from 1 to 6.
Correct Usage of wavedec: The 'wavedec' function is correctly used to decompose the signal up to the specified level.

类别

Help CenterFile Exchange 中查找有关 Large Files and Big Data 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by