【发布时间】:2013-01-13 06:03:01
【问题描述】:
考虑以下示例:
Jday = datenum('2007-01-01 00:00','yyyy-mm-dd HH:MM'):1:...
datenum('2009-12-31 23:00','yyyy-mm-dd HH:MM');
Jday2 = datenum('2008-01-01 00:00','yyyy-mm-dd HH:MM'):1:...
datenum('2010-12-31 23:00','yyyy-mm-dd HH:MM');
Data{1} = [Jday;1+(length(Jday)-1).*rand(1,length(Jday))]';
Data{2} = [Jday2;1+(length(Jday)-1).*rand(1,length(Jday))]';
Data{3} = [Jday;1+(length(Jday)-1).*rand(1,length(Jday))]';
for i = 1:length(Data);
d_nan{i} = floor(1+(length(Jday)-1).*rand(1,100));
end
for i = 1:length(Data);
a(i) = length(d_nan{i});
for ii = 1:a(i);
Data{i}(d_nan{i}(ii),2) = nan;
end
end
在此示例中,我有一个单元格数组“数据”,其中包含三个单元格数组,每个单元格数组的第一列包含第二列中值的儒略日期。每个元胞数组中有许多 nan 值。我想用该特定朱利安日期的其他单元格中的值的平均值替换每个单元格数组中的 nan 值。我的问题很复杂,因为三个单元格没有同时显示数据(尽管 Data{1} 和 Data{3} 具有相同的日期。)如果三个单元格之间的儒略日期相同,则可以通过使用来解决此问题isnan 找到 nans 的位置,然后用其他行的 nanmean 替换这些行(在其他单元格中)。
谁能提出解决这个问题的有效方法?感谢您的宝贵时间
【问题讨论】:
-
你能保证所有的元胞数组都是相同的维度吗?如果是,那你为什么不使用 N×6 矩阵来存储所有内容?
-
不,我不能保证它们的尺寸相同。每个单元格代表一个不同的位置,这会发生变化。
-
那么如果
NaN值在其他数组中没有匹配的日期会发生什么? -
在这种情况下,它将保持为 nan。
-
你检查我的解决方案了吗?