2013-02-20 258 views
2

我有一个包含60个矩阵的文件。我希望获得这60个矩阵中每个值的平均值。在matlab中求和多个矩阵

因此矩阵[1,2]的[1,1]平均值的均值。

我无法使用平均命令,我不知道什么是最好的方式来做到这一点。

这里的文件:https://dl.dropbox.com/u/22681355/file.mat

+0

你不能使用'mean'命令是什么意思? – 2013-02-20 15:11:43

+0

如果我键入mean(results_foptions),那么该文件包含60个单独的矩阵,那么我得到错误:???对'cell'类型的输入参数未定义的函数或方法'sum'。 错误在==>意思是28 y = sum(x)/ size(x,dim); – user1723765 2013-02-20 15:13:47

+0

实际上,链接到的文件不包含60个单独的矩阵,而是包含这60个矩阵的一个单元格数组。 – 2013-02-20 15:17:39

回答

4

你可以试试这个:

% concatenate the contents of your cell array to a 100x100x60 matrix 
c = cat(3, results_foptions{:}); 

% take the mean 
thisMean = mean(c, 3); 

进行四舍五入为最接近的整数,则可以使用

roundedMean = round(thisMean); 
+0

但我想要做的是实际上采取平均值在整个单元阵列与相同的位置 – user1723765 2013-02-20 15:18:17

+0

所以基本上采取每个单元格中的第一个条目的均值,然后第二个数组的平均值,并最终与一个单一的矩阵与每个条目的手段 – user1723765 2013-02-20 15:18:42

+0

@ user1723765请参阅我的更新答案。 – 2013-02-20 15:22:05

0

矩阵的平均值,可以计算几种不同的方式。

首先,你可以计算每列的均值,然后计算这些手段的意思是:

colMeans = mean(A); 
matMean = mean(colMean); 

或者你可以在矩阵转换成列向量,并计算平均直接

matMean = mean(A(:)); 
+0

但我实际上想得到的是单个矩阵,其中每个条目的单元格阵列都是 – user1723765 2013-02-20 15:20:41

+0

@ user1723765好的,您在原始问题中没有说清楚 – slayton 2013-02-20 15:43:31

1

你应该把所有的矩阵一起在三维,,如(矩阵):

mat(:,:,1) = mat1; 
mat(:,:,2) = mat2; 
mat(:,:,3) = mat3; 
etc... 

后来干脆:

mean(mat, 3); 

其中参数“3”规定所需的平均accros第三维。