如何计算单元格数组中矩阵列中相等元素的数量?

时间:2013-10-13 10:22:17

标签: arrays matlab cell

如果A是一个由100个50x50矩阵组成的单元阵列,并且我想从该单元阵列中每个矩阵的每一列计算一个特定元素N,那么我该如何在matlab中完成呢?

2 个答案:

答案 0 :(得分:1)

使用cellfun

>> count = cellfun( @(x) sum( x == N, 1 ), A, 'UniformOutput', 0 );

count是一个包含100个1乘50矢量的单元数组:count{3}(5)是{{1}中第3列中等于N的元素数}}

答案 1 :(得分:0)

对于一般情况,@ Shai的回答是要走的路。但是,由于在这种情况下所有矩阵都具有相同的大小,因此可以通过将它们存储在3D阵列而不是单元阵列中来节省时间。也就是说,定义大小为50x50x100的数组A,使得A(:,:,1)是第一个矩阵,A(:,:,2)是第二个矩阵,依此类推。然后

count = squeeze(sum(A==N)).';

其中count(3,5)被解释为@Shai's answer