MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Sum of empty matrix

Asked by Thomas on 30 Mar 2012

The sum of an empty matrix does not always follow the rule 'sum(empty) = 0'. What's up with this?

>> sum(ones(1,0))

ans = 0

>> sum(ones(0,1),2)

ans = Empty matrix: 0-by-1

>> sum(ones(2,0))

ans = Empty matrix: 1-by-0

>> sum(ones(0,2),2)

ans = Empty matrix: 0-by-1

1 Comment

Thomas on 30 Mar 2012

There is also some funny business with find on an 'all false' matrix, the behavior of find(0) seems inconsistent.

>> [x y] = meshgrid(0:2,0:2)
x =
0 1 2
0 1 2
0 1 2
y =
0 0 0
1 1 1
2 2 2
>> x=num2cell(x)
x =
[0] [1] [2]
[0] [1] [2]
[0] [1] [2]
>> y = num2cell(y)
y =
[0] [0] [0]
[1] [1] [1]
[2] [2] [2]
>> cellfun(@(z,w) find(zeros(z,w)), y, x, 'UniformOutput', false)
ans =
[] [0x1 double] [0x1 double]
[1x0 double] [] [1x0 double]
[0x1 double] [0x1 double] [0x1 double]

Products

No products are associated with this question.

Answer by the cyclist on 30 Mar 2012

I don't think this answers your question, but it does give some related info: http://blogs.mathworks.com/loren/2009/11/04/calculus-with-empty-arrays/

Answer by Jan Simon on 30 Mar 2012

Especially:

```sum(ones(1, 0))  %  0
sum(ones(2, 0))  %  Empty matrix: 1-by-0
```