The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: matrix multiplication with zero dimensions
Replies: 11   Last Post: Jan 7, 2013 10:20 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Steven Lord

Posts: 18,038
Registered: 12/7/04
Re: matrix multiplication with zero dimensions
Posted: Jan 7, 2013 10:20 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Matt J " <mattjacREMOVE@THISieee.spam> wrote in message
> "Bruno Luong" <b.luong@fogale.findmycountry> wrote in message
> <kcd1lg$6u4$>...

>> "Matt J" wrote in message <kcd0g0$34t$>...
>> Just like sum([]), prod([]), this result is no exception so to be
>> documented separately.

> ==============
> I can see the rational behind sum([])=0and prod([])=1. It's so that
> sum([A,[]],2)=sum(A,2)+sum([])
> prod([A,[]],2)=prod(A,2)*prod([])

Why does SUM of an empty vector return 0 and PROD of an empty vector return
1? Convention.

Now [] is a 0-by-0 empty matrix not an empty vector and so technically
sum([]) should return a 1-by-0 empty instead of 0, but for that explanation
I'm pretty sure you'd have to ask Cleve.

> I do not see the rationale behind the originally posted relationship,
> though. Taking a slightly different example, I can see perhaps that
> ones(3,0)*ones(0,3)
> should end up being 3x3 because of the outer dimensions, but why should it
> end up containing zeros.

The definition for matrix multiplication plus the MATLAB rule for SUM is why
the result is all zeros.

If C = A*B, then:

1) size(A, 2) must equal size(B, 1)
2) C will be a matrix of size [size(A, 1), size(B, 2)]
3) C(r, c) is the sum of A(r, :) .* (B(:, c).'). This is the definition of
matrix multiplication (slightly tweaked to use MATLAB notation and abide by
the rules about compatible sizes for the .* operator.)

In this case size(A) is [3 0] and size(B) is [0 3] and condition 1 is
satisfied. The resulting C is of size [3 3] and if we compute C(1, 1) we

>> A = zeros(3, 0);
>> B = zeros(0, 3);
>> % C(1, 1) = A(1, :) .* (B(:, 1).')
>> A(1, :).*(B(:, 1).')

ans =
Empty matrix: 1-by-0

Since this is an empty vector, its SUM is zero.

>> sum(ans)
ans =

This generalizes to the rest of the elements of C.

Steve Lord
To contact Technical Support use the Contact Us link on

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.