|
|
Re: matrix multiplication with zero dimensions
Posted:
Jan 7, 2013 10:20 AM
|
|
"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
|
|