0

各年 (10 年) の X 値の月平均である単一の列ベクトルを取得しようとしています。私は 2 つの連続する for ループを使用しています。おそらく、より単純なコードを使用すると、毎年の月平均を得ることができます...?

わかりました-ここに私のmatlabコードがあります:

   X = values;
   t = time values;
   timevec = datevec(t);
   years = timevec(:,1) ;
   yy = unique(years);
   month = timevec(:,2);
   mm = unique(month);

   for iyear = 1:length(yy);
         fy = find(years==yy(iyear));
         ym = month(fy);

        for imonth = 1:length(mm);
                fm = find(ym==mm(imonth));
                Xmean(imonth,iyear) = mean(X(fm));
         end
    end

ただし、サイズ (length(imonth),length(iyear)) の行列ではなく、単一の列ベクトルを取得したいので、次のようになります。

     Xmean(:) of size ((length(imonth*iyear)), 1)

これは意味がありますか?この問題で私を助けていただければ幸いです。

乾杯、S.

4

1 に答える 1

1

accumarrayカスタム関数で使用する必要があります@mean

[~,~,yi] = unique( timevec(:,1) ); % year index, using unique to start with one.
mi = timevec(:,2); % month index
subs = 12*(yi-1) + mi; % month-year into a single vector index
Xmean = accumarray( subs(:), X(:), [], @mean );
Xmean(isnan(Xmean)) = 0; % remove mean([]) results.
于 2013-07-24T05:12:47.353 に答える