在Matlab中,我有一个大小为AVG
的结构1 x 6
,其中有一个字段averageNEST
,它是一个大小为1 x 6
的单元格数组。
每个averageNEST
包含不同大小的矩阵(在一个维度上),例如
AVG(1).averageNEST{1,1}
的大小为281 x 3 x 19
和
AVG(1).averageNEST{1,2}
的大小为231 x 3 x 19
矩阵的第二维和第三维总是3和19,它只是第一个可以改变的维度。
我希望对AVG(1).averageNEST
中包含的所有矩阵求平均值,并获得一个大小为X x 3 x 19
的矩阵,其中X是AVG(1).averageNEST
中最小矩阵的大小。
然后我想对averageNEST
中的所有6 AVG
执行此操作 - 因此AVG(1), AVG(2) ... AVG(6)
有一个单独的平均矩阵。
我尝试过多种方法,包括尝试使用以下代码连接矩阵:
for i=1:6
min_epoch = epoch + 1;
for ii=1:19
averageNEST(:,:,ii) = [AVG(i).averageNEST(1:min_epoch,:,ii)];
end
end
然后对此进行平均但是它不起作用,现在我对我正在做的事情感到困惑!
有人可以帮忙吗?
答案 0 :(得分:0)
我不确定我是否理解你想做什么。如果您只想保留最小矩阵大小的元素,然后平均这些矩阵,您可以执行以下操作:
averageNEST = cell(size(AVG));
for iAVG = 1:numel(AVG)
nests = AVG(iAVG).averageNEST;
minsize = min(cellfun(@(x) size(x,1), nests));
reducednests = cellfun(@(y) y(1:minsize, :, :), nests, 'UniformOutput', false);
averageNEST{iAVG} = sum(cat(4, reducednests{:}), 4) / numel(nests);
end