matlab - cellfun对每个单元格的所有元素求和

时间:2012-06-21 21:52:55

标签: matlab

您好我使用以下方法填充了一个单元格数组:

D(i) = {dist};

D = reshape(D, w, h)

所以,如果我有:

 pix1 = D{1,1};   
 pix2 = D{2,2};

我得到了

pix1 = 
    1 2 3

pix2 =
    4 5 6

我想要做的是将每个像素中的所有元素相加,然后取出这些结果并形成一个矩阵,即

sum(pix1) = 6
sum(pix2) = 15

matrix = 
    6 15

在这种情况下,矩阵是一个1X2矩阵(我的更大)。

我正在尝试使用:

field = cellfun(@(dist) sum(dist(:)), D,'UniformOutput', false);

但这只是给了我一个充满NaN的矩阵。我哪里错了?

2 个答案:

答案 0 :(得分:2)

A = {[1 2 4], [4 5 6]};
B = cellfun(@sum, A)

结果

B = [6 15]

B = [7 15]

答案 1 :(得分:0)

如果您的单元格中有NaN个,并且您希望忽略它们,则可以使用nansum

A = {[1, 2, NaN], [3, NaN, 4, 5]; [6, NaN], [10, -3, NaN, 4]};
B = cellfun( @nansum, A )

结果

B =

    3    12
    6    11
相关问题