Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

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


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

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: 17,944
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
news:kcd527$hou$1@newscl01ah.mathworks.com...
> "Bruno Luong" <b.luong@fogale.findmycountry> wrote in message
> <kcd1lg$6u4$1@newscl01ah.mathworks.com>...

>> "Matt J" wrote in message <kcd0g0$34t$1@newscl01ah.mathworks.com>...
>>
>>
>> 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.

http://en.wikipedia.org/wiki/Empty_sum
http://en.wikipedia.org/wiki/Empty_product

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
have:

>> 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 =
0

This generalizes to the rest of the elements of C.

--
Steve Lord
slord@mathworks.com
To contact Technical Support use the Contact Us link on
http://www.mathworks.com




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

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.