MATLAB: How to calculate Trailing Moving Sums going up vertically in a table

binarycross-sectiondatafinancialFinancial Instruments ToolboxFinancial Time Series ToolboxFinancial Toolboxfor loopif statementloopMATLAB and Simulink Student Suitepanel datasumtable

I have the following table:
– – –
Columns 'L' and 'U' consist of cells that contain object names that correspond to the headers in columns 4-281. Example for ABC.L{1,1} :
– – –
Goal: For every date verify what objects are in 'L' (respectively 'U') and sum the aggregate of those objects' 4-point trailing moving sum and its standard deviation (going up in the table!) and store it in a new variable, e.g. LSum and LStd for 'L' as well as USum and UStd for 'U'. For dates with insufficient values, e.g. 15-Jul-2016 with only 3 instead of 4 time steps ahead, return NaN's.
– – –
How I would start:
for row=1:size(ABC,1)
row_values = ABC{row,:};
row_values = row_values(4:end);
% How to make the loop for columns L and U where there are multiple objects in one cell?
% How can I use 'movsum' and 'movstd' here to calculate values vertically going up?
end;
Thanks a lot for your help!

Best Answer

Extract the column of data, then use conv() to sum up the counts and values, then divide them.
column = randi(9, 11, 1) % Sample data
kernel = [0;0;0;1;1;1;1]; % Tell it to use a kernel that will compute the trailing 4 values.
onesVector = ones(length(column), 1);
cellSum = conv(onesVector, kernel, 'same')
valuesSum = conv(column, kernel, 'same')
trailingMean = valuesSum ./ cellSum