1

分析スタジオで複数のマトリックスを使用する関数を作成しています。

行列は、名前に日付参照が付いた同じ名前で与えられます (月から月、年から年: 1956 年 11 月はmatrix5611、1956 年 12 月はmatrix5612、1957 年 1 月はmatrix5712、というように 1999 年末まで続きます)。

それぞれについて、各月/年の平均値を比較する必要があります (どの分野の研究に重点を置いているかによって異なります)。

日付ごとに手動で書き込むのではなく、いくつかのループを使用して入力行列の名前を変更しようとしていますが、役立つ機能があれば便利です。

アイデアや便利な機能はありますか?

4

2 に答える 2

0

データが異なる行列にある場合はeval、平均をいくつかの行列に格納するために使用できます。この例MeanMatrixでは、Y次元は年、X次元は月です。

編集:それは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

次に、月と年の平均を希望どおりに比較できます。

于 2012-05-07T20:24:00.583 に答える
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;
于 2012-05-07T20:30:49.927 に答える