如果A是一个由100个50x50矩阵组成的单元阵列,并且我想从该单元阵列中每个矩阵的每一列计算一个特定元素N,那么我该如何在matlab中完成呢?
答案 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。