1

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

Data=(Data{1}+......+Data{n})/n) 其中 Data{n} 是 m*n.. 的矩阵

非常感谢

4

2 回答 2

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,则可以替换tmpData,一切都会正常工作。

或者,如果Data只是 am*n 数值数组

averageData = mean(Data,2);
于 2010-08-27T11:19:10.303 回答
1

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

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

在上面的示例中,我假设 Data 是一个线形单元阵列。我从来没有亲自使用过mtimesx,这个解决方案来自那里,也讨论了时间问题。

希望这可以帮助。

一个。

于 2010-08-27T14:04:07.217 回答