nancumsum: Cumulative sum of a matrix, with user-specified treatment of NaNs.
Computes the cumulative sum of matrix A along dimension DIM, allowing the user to replace NaNs with zeros, to skip over them, or to reset on NaNs, maintaining NaNs as placeholders.
USAGE: B = nancumsum(A, DIM, NMODE)
A: Input matrix.
B: Output cumulative sum matrix, treating NaNs as determined by nmode.
DIM: B = nancumsum(A, DIM) returns the nan-cumulative sum of the elements
along the dimension of A specified by scalar DIM. For example,nancumsum(A,1) works down the columns, nancumsum(A,2) works across the rows. If DIM is not specified, it defaults to the first non-singleton dimension of A.
NMODE: specifies how NaNs should be treated. Acceptable values are:
1: REPLACE NaNs with zeros (default).
2: MAINTAIN NaNs as position holders in B. (Skip NaNs without reset.)
3: RESET sum on NaNs, replacing NaNs with zeros.
4: RESET sum on NaNs, maintaining NaNs as position holders.
See also: cumsum, nansum, nancumprod, nanmean, nanmedian, ...
(nancumprod is available from the FEX. Other nan* may require Toolboxes)
a trouvaille of paramount importance to this community - offered by former CSSM senior brett shoelson; a function that should have been in ML stock for a long time.
needless to say that his clean coding fulfills all the criteria to be a five-star contender: concise h1, help text with meticulous examples, proper input and options error checking, and an interesting, vectorized engine.
As you should expect from Brett, excellent in all respects.
Fixes an issue with the vectorization of mode 3.
This submission fixes a bug pointed out by a couple of attentive users. Also, note that I have added new options for the treatment of NaNs, and eliminated one for special treatment of vectors. (Not necessary!)
Updated M file and license text file copyright to The MathWorks, Inc.
Fixing bug in my code (isvector should have been isscalar) and in my examples(thanks, us). Also updating See also references.
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.