Start Cumsum from table of values that correspond with given indeces
    8 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hello, I have a timetable of values called ddtable with column 'RAIN' and an array of index called startdd. 
The objective:
1) If index of ddtable matches with startdd, start cumsum for subsequent RAIN values until it exceeds 3.5 then stop.
2) Append all indices that were involved in the cumsum into a new table
How do I go about this because traditional while loop does not work as well and no discussion have addressed this type of question.
for ii = 1:length(rain)
%  If rain index matches with startdd, start cumulation
   if idx(rain) == startdd
       %  The cumulation will end once it exceeds 3.5mm
       while cumsum(rain(startdd)) < 3.5
%            Append all index values that were involved in the cumsum
       end
   end
end
Many thanks!
2 Commenti
  Eric Sofen
    
 il 18 Dic 2020
				The data in your MAT files doesn't match up with your example code, so I'm not 100% sure what you're trying to do, but see if this does the trick.
load('ddtable.mat')
load('startdd.mat')
result =ddtable([],:);
inds = [];
for ii = startdd % Iterate over start indices
    cs = cumsum(ddtable.RAIN(ii:end)); %do cumsum over most of the rain data - we'll end up throwing away anything beyond 3.5 mm
    inds3_5 = ii-1 + find(cs <= 3.5); % Find where data is below the 3.5mm threshold; adjust based on the start index.
    result = [result; ddtable(inds3_5,:)]; % append data
    inds = [inds; inds3_5]; % append indices
end
Risposte (0)
Vedere anche
Categorie
				Scopri di più su Logical in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

