# [vorbis-dev] Dot Product

Carsten Haese carsten at xiph.org
Wed Feb 18 10:52:03 PST 2004

```
On Wed, 2004-02-18 at 13:35, Christian Wassmer wrote:
> Simeon Maxein wrote:
>
> >>I don't exactly understand what they mean by "multiply each element of
> >>the floor curve by each element of that channel's residue vector"?
> >>Supposing one channels floor vector is (3,2,1) and the according residue
> >>is (1,0,2), the resulting "dot-producted" vector will be (3,0,2)?
> >>However, that's how I've implemented but it seems to be wrong. So what't
> >>the correct interpretation of this dot-product?
> >
> >
> > The dot product is a vector multiplication that is calculated as follows:
> > (Ax,Ay,Az) dot (Bx,By,Bz) = Ax*Bx + Ay*By + Az*Bz
> >
> > So the result is not a vector, but a number. For your example:
> > (3,2,1) dot (3,0,2) = 3*3 + 2*0 + 2*1 = 11
> But how do I have to apply this dot product. I mean, I have to calculate
> a *vector* somehow with the floor-vector and the residue-vector - and
> not just a single number. Is it possible that they mean "cartesian
> product" instead of "dot product"?

>From http://www.xiph.org/ogg/vorbis/doc/vorbis-spec-intro.html:
"for each output channel, the decoder multiplies the floor curve and
residue vectors element by element, producing the finished audio
spectrum of each channel."

Simeon's explanation of the dot product is correct, but this decoding
step is, contrary to what the specification calls it, not a dot product.
It is an element-wise multiplication of two vectors. I don't know if
this operation has another name.

So, you're essentially on the right track with the "dot product" that
you've implemented. Unfortunately, I don't know why it's not working for
you.

-Carsten

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

```