ユリウス日として指定した日付の入力ベクトルと、(ベクトルとして) 値の範囲を必要とする関数を作成しています。関数内では、定義済みのウィンドウ サイズを使用して、データ内の任意のナンを削除します。例えば:
t = transpose(1/24:1/24:40);
data1 = 1+(30-1).*rand(length(t),1);
Randm = floor(1+(length(t)-1).*rand(120,1));
data1(Randm) = nan;
figure(1);
plot(data1,'linewidth',3);
hold on;
dailyData = reshape(data1,40,[]);
nanMap = isnan(dailyData);
validValuesPerDay = sum(~nanMap, 2);
nonNanData = dailyData;
nonNanData(nanMap) = 0;
sumPerDay = sum(nonNanData, 2);
dailyMeans = sumPerDay ./ validValuesPerDay;
dailyMeans = repmat(dailyMeans, [1 24]);
repairedData = dailyData;
repairedData(nanMap) = dailyMeans(nanMap);
data1 = reshape(repairedData,[],1);
plot(data1,'--r');
私が今直面している問題は、reshape を使用するときにコードに影響を与えるため、毎時、たとえば毎日、または毎週とは異なる解像度のデータに対処する方法です。これに対処する方法について誰か提案がありますか? データの長さの一部としてウィンドウサイズを指定する方法に沿って何かをすることを考えていました (これは、reshape を使用する場合を意味します)。