Info

この質問は閉じられています。 編集または回答するには再度開いてください。

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

1 回表示 (過去 30 日間)
yp78
yp78 2018 年 3 月 30 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
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

回答 (1 件)

Walter Roberson
Walter Roberson 2018 年 3 月 30 日
rtn = {data1; data2};
for j = 1 : length(rtn)
rollingAve = movavg( rtj{j}, 'simple', 251);
figure
plot(rollingAve)
end
  1 件のコメント
yp78
yp78 2018 年 3 月 30 日
編集済み: yp78 2018 年 3 月 30 日
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!

Translated by