doc PulseDecomp
Documentation of the PulseDecomp function.
helpFun('PulseDecomp')
Pulse decomposition of a velocity time history
[PULSETH,RESTH,TP,WAVSCALE,WAVCOEFS]=PulseDecomp(DT,XGT,WNAME,TPMIN,...
TPMAX,NSCALES)
Description
This function decomposes an input velocity time history record into a
pulse motion and a residual motion. The shape of the pulse depends on
the value of the WNAME parameter. To obtain the velocity time history
of a given acceleration record use the command:
PARAM=OpenSeismoMatlab(DT,XGTT,'TIMEHIST',BASELINESW)
To extract more than one pulse wavelets from a velocity time history
(let's say N), apply this function repetitively N times where at each
time (except for the first) this function is applied to the residual
motion of the previous time:
[PULSETH1,RESTH1,~,~,~]=PulseDecomp(DT,XGT,WNAME,TPMIN,TPMAX,...
NSCALES)
[PULSETH2,RESTH2,~,~,~]=PulseDecomp(DT,RESTH1,WNAME,TPMIN,TPMAX,...
NSCALES)
etc.
Input parameters
DT [double(1 x 1)] is the time step of the input velocity time
history XGT.
XGT [double(1:numsteps x 1)] is the input velocity time history.
numsteps is the length of the input velocity time history.
WNAME [char(1 x :inf)] is the wavelet family short name to be used
for the decomposition of the velocity time history. See the
Matlab function waveinfo.m for more details.
TPMIN [double(1 x 1)] is the minimum pulse period to be considered
for the continuous 1-D wavelet transform of XGT
TPMAX [double(1 x 1)] is the maximum pulse period to be considered
for the continuous 1-D wavelet transform of XGT
NSCALES [double(1 x 1)] is the number of pulse period values between
TPMIN and TPMAX to be considered for the continuous 1-D wavelet
transform of XGT
Output parameters
PULSETH [double(1:numsteps x 1)] is the velocity time history of the
pulse contained in the input velocity time history. numsteps is
the length of the input velocity time history.
RESTH [double(1:numsteps x 1)] is the velocity time history of the
residual motion after subtracting the time history of the pulse
from the input velocity time history. numsteps is the length of
the input velocity time history.
TP [double(1 x 1)] is the period of the pulse which is extracted from
the input velocity time history.
WAVSCALE [double(1 x 1)] is the scale at which the largest wavelet
was found.
WAVCOEFS [double(1 x 1)] is the coefficient for the extracted
wavelet.
Example
rng(0)
% Duration in seconds
duration = 10;
% Time step
dt = 0.01;
% Time vector
t = linspace(0, duration, duration /dt)';
% Number of sinusoidal components
num_sin_components = 3;
% Generate a random seismic signal using a combination of sinusoids
xgt = zeros(length(t),1);
for i = 1:num_sin_components
% Generate the sinusoidal component
s = rand * sin(2 * pi * 0.5*rand * t + rand);
% Add the component to the seismic signal
xgt = xgt + s;
end
% Setup wavelet parameters
wname = 'db4';
TpMin = 0.25;
TpMax = 15;
nScales = 50;
% Apply pulse decomposition
[pulseTH,resTH,Tp,wavScale,wavCoef] = ...
PulseDecomp(dt,xgt,wname,TpMin,TpMax,nScales);
% Plot the results
np = length(xgt);
time = dt:dt:dt*np;
fig = figure();
subplot(3,1,1)
plot(time, xgt, '-k')
legend('Original ground motion','location','northwest')
ylabel('Velocity');
set(gca, 'xticklabel', [])
subplot(3,1,2)
plot(time, pulseTH, '-r')
legend('Extracted pulse','location','northwest')
ylabel('Velocity');
set(gca, 'xticklabel', [])
subplot(3,1,3)
plot(time, resTH , '-k')
legend('Residual ground motion','location','northwest')
hy = ylabel('Velocity');
hx = xlabel('Time [s]');
__________________________________________________________________________
Copyright (c) 2018-2023
George Papazafeiropoulos
Major, Infrastructure Engineer, Hellenic Air Force
Civil Engineer, M.Sc., Ph.D.
Email: gpapazafeiropoulos@yahoo.gr
_________________________________________________________________________