MATLAB: Fit a repeated pattern

curve fittingtime series

I have the following time series that i want to model.
The graph shows several 'events' that have a repeated pattern (i consider as an 'event' the data points between the long straight lines). I can fit each event (the parts between the straight lines) separately with a 3rd or 4th level polynomial but what i want is to create a continuous model to fit several plots like this one automatically.All events should have the same shape (the reason why they do not look exactly the same is because of some noise is added). Does anyone know how to create a model for this whole plot if i know the shape of one of those events? I have included the dataset in text files.

Best Answer

Getting the ensembles (data between the vertical lines) takes a bit of experimentation. It is then possible to put those data into a matrix of ensembles. Those data are then your to work with.
The Code
x = load('x.txt');
y = load('y.txt');
[pks,locs] = findpeaks(-y, 'MinPeakHeight',-20, 'MinPeakDistance',100); % Find Indices Of Vertical Lines
figure(1)
plot(x, y)
hold on
plot(x(locs), -pks, 'vr')
hold off
ensblen = min(diff(locs))-20; % Length Of Each Vector, Eliminating Vertical Lines At Both Ends
ensbmtx = zeros(ensblen, numel(locs)-1); % Preallocate
for k1 = 1:size(ensbmtx,2)
ensbmtx(:,k1) = y(locs(k1)+[0:size(ensbmtx,1)-1]+15); % Create Ensemble
end
figure
ribbon((1:size(ensbmtx,1)), ensbmtx, 0.2, 'EdgeColor','w') % View Results (Optional)
grid on
The ‘ensbmtx’ (‘ensemble matrix’) result is (1886x10). Each vector is a column.