How to find index in cell array to start cumsum

1 回表示 (過去 30 日間)
Jonathan Cheong
Jonathan Cheong 2021 年 3 月 7 日
編集済み: Jonathan Cheong 2021 年 3 月 8 日
Hello, I have a cell array 'ddvaluecell'.
I would like to find the index of values in these cells which are > 0.5.
Then starts a cumsum for the next 5 indices or stop early when it reaches 3.
How do I do this?
  5 件のコメント
Walter Roberson
Walter Roberson 2021 年 3 月 7 日
Also take the time to decide what you want to do if there are multiple nearby values that meet the test. Do you want to process separately for each possible starting point Do you want to bundle all of the values within a window of 5 together only making one start for the window? Even if the sum ends early? Do you want to bundle all consecutive >½ together but only take starting from the first of the group?
Jonathan Cheong
Jonathan Cheong 2021 年 3 月 7 日
Thanks for the suggestion, I'll give it a go

サインインしてコメントする。

採用された回答

Jonathan Cheong
Jonathan Cheong 2021 年 3 月 8 日
編集済み: Jonathan Cheong 2021 年 3 月 8 日
Ok, so this is the answer.
% Index of starting cumsum
indices = cellfun(@(C) find(C>0.5), ddvaluecell, 'uniform', 0);
indexes = cellfun(@(x,ii) x(ii),ddindexcell,indices, 'uniform', 0);
% Change cell into array
indexarray = padcat(indexes{:}); % Pad rows with PADCAT function
indexarr = indexarray(:).'; % Change into column form
indexarr = indexarr(~isnan(indexarr)); % Remove all NaN
sumsum = zeros(0,size(rain,2));
indsum = [];
indend = [];
for bi = indexarr % Iterate over start indices (1x140)
cs = cumsum(rain(bi:end));
csp = find(cs <= 2.5); % Stop when reach 2.5mm
if numel(csp) <= 5 % Cumsum less than 5 days is used
inds3_5 = bi-1 + csp;
sumsum = [sumsum;rain(inds3_5,:)]; % append data
indsum = [indsum; inds3_5]; % append indices
ddearly = [indsum, sumsum]; % Index and value side by side
indend = [indend; inds3_5(end)]; % Last index of cumsum
end
end
  4 件のコメント
Walter Roberson
Walter Roberson 2021 年 3 月 8 日
Can we assume that rain is Non-negative and never nan?
Jonathan Cheong
Jonathan Cheong 2021 年 3 月 8 日
Yes, rain is never negative.
Good point, I'll change the sum variable to something else.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by