Trouble with for loop to determine the discrete wavelet transform (DWT)
1 view (last 30 days)
Show older comments
Hi, I need assistance plotting the approximation (A) and detail (D) coefficients separately for all sheets in an Excel file over a given time frame. Currently, the existing code generates the transform only for the final sheet (Sheet 8). I am uncertain how to modify the code to plot A1 and D1 separately for all sheets. I would be grateful for any guidance you may provide. Thank you for your time and help.
clc
close all
clear all
filename = 's.xlsx';
% Get the sheet names
[~, sheetNames] = xlsfinfo(filename);
for i = 1:numel(sheetNames)
% Read the data from the sheet
data = xlsread(filename, i);
% Extract the time and signal columns
t(:,i) = data(:, 1);
sig (:,i) = data(:, 2);
N = length(sig);
dt = t(3) - t(2); % sampling time
fs = 1/dt; % freq
signal = sig (:,i);
wname = 'bior6.8';
% Discrete Wavelet, DWT
[CA1,CD1] = dwt(signal,wname);
A1 = idwt(CA1,[],wname,N);
D1 = idwt([],CD1,wname,N);
t (:,i) = linspace(0,N,N)*(1/fs);
subplot(1,2,1);
plot (t,A1,'k','LineWidth',1.5);
title(sprintf('Approximation for sheet%d', i));
set(gca,'fontname','Times New Roman','FontSize',10)
xlabel('Time (secs)')
ylabel('Amplitude')
grid on
subplot(1,2,2);
plot (t,D1,'k','LineWidth',1.5);
title(sprintf('Detail for sheet%d', i));
set(gca,'fontname','Times New Roman','FontSize',10)
xlabel('Time (secs)')
ylabel('Amplitude')
grid on
end
0 Comments
Answers (0)
See Also
Categories
Find more on Wavelet Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!