A basic use case of CWT_Multi
Having provided the user with a brief introduction to the theory behind CWT_Multi, we now turn to the fun part: how to use the program!
This code is a pared down version of that found in the file CWT_MWE.m, which can be found in the CWT_Multi Github repository.
Firstly, the user adds the path to the CWT_Multi source code
addpath('./src')
A time series
We then load the data, which is also included in the main repository.
load('./data/Vancouver/vancouver_wl.mat')
For this example, we use a time series at NOAA Vancouver station number 9440083. We now choose the time windoe over which we would like to perform the analysis. With the default decimation factor of twenty time steps, and a sampling period of one hour, two years of data will output a time series of tidal amplitudes and phases that is about \(365.25 \times 2 \times (20/24) / 1 = 608\) values long. We define this window as
startDate = datetime(2010,06,03);
endDate = datetime(2012,06,03);
Van.start = find(Van.dates==startDate);
Van.end = find(Van.dates==endDate);
Van.dates = Van.dates(Van.start:Van.end);
Van.wl = Van.wl(Van.start:Van.end);
% set time zone
Van.dates.TimeZone = 'America/Los_Angeles';
The main routine
The minimum amount of arguments to CWT_Multi is two: the timestamps in DateTime format and the corresponding water level data.
[constits,species,~,~] = cwtMulti(Van.dates,Van.wl)
There are many optional arguments to the routine, which are detailed in the header of the cwtMulti.m file header.
The main output
The main output from CWT_Multi are two struct type variables:
constitsreturns constituent amplitudes for the respective \(D_{1}\), \(D_{2}\), and \(D_{3}+\) analyses.speciesreturns the species amplitudes for the \(D_{1}\) species, \(D_{2}\) species, etc.
To access and plot the main \(D_{2}\) constituents, for example, use
figure(); p=tiledlayout(1,1);
ax0=nexttile;
plot(constits.decTimesAll,constits.M2.amps,'linewidth',2,'DisplayName','M_2')
hold(ax0,'on')
plot(constits.decTimesAll,constits.S2.amps,'linewidth',2,'DisplayName','S_2')
plot(constits.decTimesAll,constits.N2.amps,'linewidth',2,'DisplayName','N_2')
hold(ax0,'off')
grid on
legend('location','northeast')
title('Vancouver D_2', 'Units', 'normalized', 'Position', [0.5, 0.85, 0])
set(gca,'xtick',[])
ylabel(gca,'Amp. (m)')
xlim([constits.decTimesAll(1) constits.decTimesAll(end)])
ax = gca;
ax.FontSize = 14;
A one-liner to plot the reconstruction for the constituents analysis is
plot(constits.alltimes,constits.reconstruction.reconAll,'linewidth',2,'DisplayName','constituent-based reconstruction')