Info

This question is closed. Reopen it to edit or answer.

repeating same procedure for two data sets by cell or struct array?

1 view (last 30 days)
I'm struggling to find a way to efficiently repeat the same procedure for two separate data sets. I thought it is something to do with struct or cell arrays, but no idea how to do it. I would truly appreciate your help!
% both data are m by n matrix containing returns of stock prices
rtn1=data1;
rtn2=data2;
% % want to avoid repetition by indexing the data names
% I know it is wrong, but the image of what I would like to do is...
for j=1:2
% operation is done only for the first column of the data
firstRtn=rtn(j)(:,1);
% calculate 1 year average
rollingAve=zeros(length(firstRtn)-251,1);
for i=1:length(rtn(j))-251
rollingAve(i)=average(rtn(j)(i:i+251));
end
figure
plot(rollingAve)
end

Answers (1)

Walter Roberson
Walter Roberson on 30 Mar 2018
rtn = {data1; data2};
for j = 1 : length(rtn)
rollingAve = movavg( rtj{j}, 'simple', 251);
figure
plot(rollingAve)
end
  1 Comment
yp78
yp78 on 30 Mar 2018
Edited: yp78 on 30 Mar 2018
Thank you Walter, I got the idea of how to use the cell. But when I run the code(after modifying the typo), I have the following error message. "Operands to the and && operators must be convertible to logical scalar values." It seems to be related to the movavg function. But actually, I have to use similar operations for other statistics (some of them user defined functions) other than the moving average. Could you show me how I can access to the (i:i+251) elements in the cell array, looking at my first code posted?

Community Treasure Hunt

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

Start Hunting!