我想找到每个第三维的r ^ 2(第三维基本上是数据列)。然而,在尝试使用for循环索引每个单元格(循环遍历状态然后循环遍历数据集)时,我遇到了超出索引问题,因为一些第三维度很小,而其他维度较大
我首先尝试对细胞进行排序:
[dummy, Index] = sort(cellfun('size', data_O3_spring, 3), 'descend');
S = data_O3_spring(Index);
然后循环查找corrcoef
(使用数据集data_O3_spring
,其形式与上述相同):
for k = 1:7 % Number of states
for j = 1:17 % largest number of sites
r2_spring{k}(:,:,j) = power((corrcoef(S{k}(:,:,j), data_PM25_spring{k}(:,:,j), 'rows', 'pairwise')), 2);
end
end
但是,当我超过5(最小数据集的大小)时,这会给我一个超出索引误差。
关于我的数据格式:data_O3_spring
是< 1x7>包含春季月份7个州数据的单元格。
data_O3_spring{1}
(其中一个州)有7个单元格(我正在查看不同的数据集),每个单元格大小为:
<61x1x7 double>
<61x1x17 double>
<61x1x8 double>
<61x1x16 double>
<61x1x5 double>
<61x1x12 double>
<61x1x13 double>
61是天数(行数)。那是第1列。第三个维度大小是我在该特定状态下查看的数据集的数量(因此它因状态而异)。
我尝试使用while
循环,但没有设法让它工作。
答案 0 :(得分:1)
我可能错过了一个细节,但似乎你可以改变你的循环:
for j=1:17,
到
for j = 1:size(S{k},3),
每个州都有不同数量的站点,这很好,因为您将输出存储在单元数组(r2_spring{k}(:,:,j)
)中,这不需要j
索引的维度相等。
此外,将corrcoef(S{k}(:,:,j)
与data_O3_spring{k}(:,:,j)
配对是一个问题,因为您已将data_O3_spring
重新排序到S
。我要说尝试:
corrcoef(S{k}(:,:,j), S{k}(:,:,j), 'rows', 'pairwise')
或
corrcoef(data_O3_spring{k}(:,:,j), data_O3_spring{k}(:,:,j), 'rows', 'pairwise')