MATLAB: How to split a 15001 x 3 matrix into four ~3400 x 3 matrices after index found when a drop of >1.8 happens

cut matrixfind dropsplit matrix

I have a 15001 x 3 matrix. The first column corresponds to time, the second to input voltage, and the third the measured output voltage. The input is a pulsed staircase and repeats 4.5 times in the matrix. I'd like to isolate the four full cycles each into their own matrix to make my next analysis a bit easier. At the end of each cycle there is a drop in the input voltage (column 2) >1.8 V. I have been able to identify the index values of where these drops occur in the column but am unsure how I split it into 4 ~3400 x 3 matrices end as so far my reading has just found ways to split rows apart. I have attached the signal analyser output so you can see a plot of the data I'm working with and also my data as well. The indexes of where I need to cut are 95 3449 6804 10159 13513. So I'd need to keep 95-3549, 3550-6804, 6805-1059, and 10160-13513.
This may be very basic, but I am a Matlab beginner and am struggling to find anything that can do this through the Matlab command searcher. Any help would be appreciated!
Here is my code atm:
filename = 'test_file.csv';
% Picoscope files have titles at the top, these need to be edited out for
% Matlab to put into matrix values start at row 4
M =csvread(filename,3,0);
sz = size(M)
%Need to find a way to identify the last value before the jump
V = M(:,2);
A = M(:,3);
T = M(:,1);
ipt = findchangepts(V,'Statistic','linear','MinThreshold',1.8)
%Split matrix on index after these values
%Find pulses in column 2- could use findchangepts with tolerance set to 0.15
%Average 10 samples not including that one before each of the values and
%write as new matrix AM for all three columns
%Subtract previuos value of AM from current value for all three columns
%Keep only the values in the three sets which correspond to positive values %in column 2

Best Answer

Just calculate the distance between your cutoff points and pass that to mat2cell to split the matrix into a cell array:
M = csvread(filename,3,0);
ipt = ...
rowdist = diff([1, ipt, size(M, 1)+1]); %distance between split points
splitm = mat2cell(M, rowdist, size(M, 2));
splitm([1 end]) = []; %discard before and after your blocks