MATLAB: Find value in another cell array based on condition

cell arrayscondition basedMATLABtime stepvalue

I have a folder containing the following files:
Every file has the same format, but for a different time step:
First (headerline): N, time, xmin, ymin, zmin, xmax, ymax, zmax
N Lines: x, y, z, vx, vy, vz, rad, q1, q2, q3, omex, omey, omez, xi
where N is the number of particles.
(x,y,z) are the coordinates
(vx, vy, vz) are the velocities
rad is radius of particle
time is time step
I have split the format into 3 seperate cell arrays as follow:
expData with format x, y, z, rad, z +rad, vol
vol is the volume of the particle, which I calculated from radius
velData with format vx, vy, vz, mag
runData with N, time, xmin, ymin, zmin, xmax, ymax, zmax
%% Loading the data
rhoPart = 2500;
files = dir(fullfile(uigetdir,'*.data*'));
[~,Index] = natsort({files.name});
files = files(Index);
expData = cell(length(files),1);
k = 1;
for i = 1:length(files)
fid = fopen(fullfile(files(i).folder,files(i).name),'r');
%% Reading the data
% Read all the data from the file
dataRead = textscan(fid,'%f %f %f %f %f %f %f %f %f %f %f %f %f %f','HeaderLines',1);
frewind(fid);
% Write headerline N, time, xmin, ymin, zmin, xmax, ymax, zmax
runData{k} = strsplit(fgetl(fid), ' ');
% Write only the x, y, and z components of the particles, particle radius,
% z component+ particle radius and volume of the particle
expData{k} = [dataRead{1}(:,1) dataRead{2}(:,1) dataRead{3}(:,1) dataRead{7}(:,1) dataRead{3}(:,1)+dataRead{7}(:,1) rhoPart*(4/3)*pi*(dataRead{7}(:,1).^3)];
% Write only the vx,vy,vz of the particles and magnitude
velData{k} = [dataRead{4}(:,1) dataRead{5}(:,1) dataRead{6}(:,1) sqrt(dataRead{4}(:,1).^2 + dataRead{5}(:,1).^2 + dataRead{6}(:,1).^2)];
fclose(fid);
k = k + 1;
end
With the following code I calculated the total mass of particles for every time step:
for i = 1:length(files)
%Count the number of particles in the silo (silo outlet is located at z =
%0.3 m)
particlesInSilo{i} = find(expData{i,1}(:,3)>0.3);
% Multiply the number of particles with the volume of the particle
siloMass{i} = sum(expData{i,1}(cell2mat(particlesInSilo(i)),6));
end
Thus,
the total mass of siloV1.data.1787 is 3.6317 kg at time step 1.900577757 s
the total mass of siloV1.data.1820 is 3.4481 kg at time step 1.935675163 s
….
the total mass of siloV1.data.2714 is 0 kg at time step 2.886495821 s
With the following code I found when the total mass is 0 kg:
for i = 1:length(files)
siloMass_zero = find(siloMass{1,i}(:)<=0);
end
I want to find the corresponding time step when the total mass is 0 kg. How can I do that?
Note that the codes I presented in this post are only sections of my code.

Best Answer

Here the code that was succesfull for me:
for i = 1:N_run %Number of simulation runs, which is for me 81 simulations
siloMass_zero{i} = find(siloMass_d(:,i)<=0); % Find all the values in the numeric array that are smaller than or equal to zero
time_dischargerange{i} = time_d(siloMass_zero{1,i}); % Find the corresponding time by indexing
time_dischrage{i} = time_dischargerange{1,i}(1,1); % Extract only the first time step value, if multiple time steps are found
end