在Matlab中使用连续矩阵

时间:2012-05-07 19:25:27

标签: matlab matrix

我正在创建一个在分析工作室中使用多个矩阵的函数。

矩阵的名称相同,名称中有日期参考(月份和月份年份:nov-1956为matrix5611,dec-1956为matrix5612,jan-1957是matrix5712,依此类推,直到1999年底。

对于每一个,每个月/每年的平均值之间应该进行比较(取决于您关注的研究领域)。

我正在尝试使用一些循环来改变输入矩阵的名称,而不是按日期手动编写,但是一个有用的函数。

任何想法或有用的功能?

2 个答案:

答案 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;