我正在编写一个函数,该函数需要一个日期输入向量,我将其指定为儒略日期,以及一系列值(作为向量)。在函数中,我使用预定义的窗口大小来删除数据中的任何 nan。例如:
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 时影响代码。有人对如何处理这个问题有一些建议吗?我正在考虑按照将窗口大小(我的意思是使用整形时)指定为数据长度的一部分来做一些事情。