This is probably easy, but my brain isn't working today...
How can you do the following operation in a vectorized way? I'd think it should be possible with some combination of cumsum, diff & logical indexing:
input = rand(10,1); output = zeros(size(input); output(1) = input(1); for ind = 2:numel(input) dif = input(ind) - input(ind-1); if dif < 0 output(ind) = output(ind-1) + dif; else output(ind) = output(ind-1); end end
outp = cumsum([inp(1);min(diff(inp),0)]);