我正在创建一个在分析工作室中使用多个矩阵的函数。
矩阵的名称相同,名称中有日期参考(月份和月份年份:nov-1956为matrix5611
,dec-1956为matrix5612
,jan-1957是matrix5712
,依此类推,直到1999年底。
对于每一个,每个月/每年的平均值之间应该进行比较(取决于您关注的研究领域)。
我正在尝试使用一些循环来改变输入矩阵的名称,而不是按日期手动编写,但是一个有用的函数。
任何想法或有用的功能?
答案 0 :(得分:0)
如果您的数据位于不同的矩阵中,则可以使用eval
将均值存储到某个矩阵中,在此示例中为MeanMatrix
,其中Y维为年,X维为月:< / p>
编辑:它没有从5611开始运行,但是yymm ......
编辑:似乎矩阵不是从1956年1月开始,而是从1956年11月开始。
% add here missing months matrix index strings.
MissingMatricesCellArray = {'5601', '5602', '5603', '5604', '5605', '5606', '5607', '5608', '5609', '5610'};
% MissingmatricesCellArray = {};
for Year = 56:99
for Month = 1:12
NumString = sprintf('%02d%02d', Year, Month);
% calculate and store means only for matrices that are not missing.
if ~(ismember (cellstr(NumString), MissingMatricesCellArray))
MeanMatrix(Year,Month) = mean(mean(eval ([ 'matrix', NumString ])));
end
end
end
然后,您可以按照自己的方式比较月份和年份的方法。
答案 1 :(得分:0)
我更愿意使用单元格数组而不是eval
。
for y = 56:99 % for each year
for m = 1:12 % for each month
ind = createYearMonthInd(y,m);
matrix{ind} = ... % whatever you want here (note the curly braces)
end
end
function ind = createYearMonthInd(y,m)
ind = y * 100 + m;