我认为我在思考这个问题并需要一个新的观点。
我想这样做;
SX=(cell2mat(X(:,1))+cell2mat(X(:,2))+cell2mat(X(:,3))+cell2mat(X(:,4)))/4
但是在for循环中,因为最终它会比4个不同的数据集多得多。 到目前为止,我的循环看起来像这样。
for i=1:turns
Sx=cell2mat(X(:,i))
%insert a form off addition?
end
问题是我不能使用sum,因为它是一个18 x 100的矩阵,需要保持这种状态。它在我进行顶级编码时起作用,但对于n> 50来说这是不实际的。
非常感谢:)
答案 0 :(得分:0)
试试这个:
SX = mean(cell2mat(reshape(X, [1 1 3])), 3)
不需要循环,适用于任何' n'
编辑 - 基于评论信息的新解决方案:
SX = mean(cell2mat(reshape(X, [size(X,1), 1, size(X,2)])), 3)
答案 1 :(得分:0)
这会有用吗?
SX = mean(cell2mat(X),2)
还是这个?
[M,N] = size(X{1});
SX = mean(reshape(cell2mat(horzcat(X{:})),M,N,[]),3)
这实际取决于您在X
中的数据设置方式。
答案 2 :(得分:0)
我能够找到使用重塑的解决方案,与其他解决方案相比,它的编码时间稍长,但它适用于任何数量的n,并允许它最终保持18 * 100:)< / p>
xx=cell2mat(X');
xxx=xx';
sx=mean(xxx,2);
SX=reshape(sx,100,18);
Mean_X=SX'
我最终只是将其扩展为1800 * 4矩阵,偶尔转置它以获得我的1 * 100 = 100 * 1,然后找到每行n的平均值,将其重新塑造为18 * 100。并且它适用于n = 5或n = 60或n = 150。感谢其他人,我不会想到重塑它并注意for循环!