我必须使用什么函数或循环来平均矩阵?

时间:2010-08-27 11:03:35

标签: matlab matrix sum average

我想找到所有矩阵的平均值:

数据=(数据{1} + ...... +数据{N})/ N) 其中Data {n}是m * n ..

的矩阵

非常感谢你

2 个答案:

答案 0 :(得分:2)

首先,将单元格数组转换为3D数组,然后可以取平均值,如下所示:

tmp = cat(3,Data{:}); %# catenates the data, so that it becomes a m*n*z (or m*1*n)
averageData = mean(tmp,3); %# takes average along 3rd dimension

注意:如果您以这种方式遇到内存问题,并且如果您不需要保留变量Data,则可以将tmp替换为Data并且一切正常

或者,如果Data只是一个m * n数值数组

averageData = mean(Data,2);

答案 1 :(得分:1)

如果您的单元阵列非常大,您可能希望远离上述解决方案,因为它的内存使用情况。然后,我建议使用Matlab Central提供的实用程序mtimesxhere

N = length(Data);
b = cell(N,1);
b(:) = {1};
averageData = mtimesx(Data,b)/N;

在上面的例子中,我假设Data是一个线形单元阵列。我从未使用过个人mtimesx,此解决方案来自there,其中还讨论了时间问题。

希望这有帮助。

一个。