0

おはよう。14610 行 16 列の行列 (eout) があります。14610 行は、1960 年 1 月 1 日から 2000 年 12 月 31 日までの期間の各日を表します。

私が必要としているのは、40 行 16 列の新しい行列で、各年の平均値を示しています。連続して 365 行の平均のようなものです。私が抱えている問題は、4年ごとのうるう年です。

これを解決するための提案はありますか?

4

1 に答える 1

1

まず、特定の年の日数を取得するには:

function n = ndays(year)
    tmp = repmat([1,1,0,0,0],numel(year),1);
    n = datenum([year(:)+1,tmp])-datenum([year(:), tmp]);
end

これにより、次のように行を収集できますmat2cell

rows_per_year = ndays(1960:2000);
chunks = mat2cell(yourInputMatrix, rows_per_year, size(yourInputMatrix,2));
means = cellfun(@(x) mean(x,1), chunks);

(後半部分はテストされていません..)

于 2013-11-28T10:21:44.470 に答える