Compute operation with different index (part II)

Good morning,
i've this table and i would like to build a function, where i could insert the time series as input and another input, an integer "n", that has a function of a loockback period.
example: Adj_Close(today) - Adj_Close(lookback) and i would like to apply to the all time series
example data in the attchment

2 Comments

Give a small example with actual data and show what the output should look like.
the output as i wrote before should be
AdjClose(today) - AdjClose(lookback)
then
AdjClose(lookback) - AdjClose(2*lookback)
and so on

Sign in to comment.

 Accepted Answer

It would be easier if you would switch over to table or timetable instead of using timeseries .
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/750909/AAPL.csv';
t = readtable(filename, 'VariableNamingRule', 'preserve');
tt = table2timetable(t);
ts = timeseries(tt);
ts
timeseries Common Properties: Name: 'unnamed' Time: [251x1 double] TimeInfo: tsdata.timemetadata Data: [251x6 timetable] DataInfo: tsdata.datametadata
n = randi(10)
n = 8
result = a_function(ts, n);
result
timeseries Common Properties: Name: 'unnamed' Time: [243x1 double] TimeInfo: tsdata.timemetadata Data: [243x1 double] DataInfo: tsdata.datametadata
function result = a_function(ts, n)
T = ts.Time(n+1:end);
adj = ts.Data.('Adj Close');
result = timeseries(adj(n+1:end) - adj(1:end-n), T);
end

More Answers (0)

Products

Release

R2020b

Community Treasure Hunt

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

Start Hunting!