Hello all, thanks for the clarification. Often it's called tensor product in several places on the web, for this reason my wrong assumption.
regards, Fausto 2015-05-20 16:08 GMT+02:00 Jay Foad <jay.f...@gmail.com>: > (Forgot to cc the list.) > > ---------- Forwarded message ---------- > From: Jay Foad <jay.f...@gmail.com> > Date: 20 May 2015 at 14:55 > Subject: Re: [Bug-apl] tensor product > To: Fausto Saporito <fausto.sapor...@gmail.com> > > > "Why" does it give a multidimensional result? Because that's the way > it's defined in APL. APL has generalised outer product in a way that > works very well with multi-dimensional arrays. The Kronecker product > is a different generalisation, which is useful when you're restricted > to matrices. > > Here's a way to get the Kronecker product in APL, using the example > from wikipedia (http://en.wikipedia.org/wiki/Kronecker_product): > > kron←{((⍴⍺)+⍴⍵)⍴1 3 2 4⍉⍺∘.×⍵} > ⊢a←2 2⍴1 2 3 4 > 1 2 > 3 4 > ⊢b←2 2⍴0 5 6 7 > 0 5 > 6 7 > a kron b > 0 5 0 10 > 6 7 12 14 > 0 15 0 20 > 18 21 24 28 > > Jay. > > On 20 May 2015 at 14:31, Fausto Saporito <fausto.sapor...@gmail.com> wrote: >> Hello all, >> >> I don't understand why the tensor product in APL (∘.×) between two >> matrices, gives a multidimensional array as result. >> >> From linear algebra, tensor product (or kronecker product) gives a >> matrix as result, >> >> for example >> >> if I2 is identity matrix >> >> 1 0 >> 0 1 >> >> I2 (tensor product) I2 gives >> >> 1 0 0 0 >> 0 1 0 0 >> 0 0 1 0 >> 0 0 0 1 >> >> instead if I use the APL operator I have : >> >> 1 0 >> 0 1 >> >> 0 0 >> 0 0 >> >> >> 0 0 >> 0 0 >> >> 1 0 >> 0 1 >> >> the result is correct but why the shape is different ? >> >> Is there a way to have a behaviour similar to linear algebra result ? >> >> I wrote a generic tensor product function, but I'm not happy because >> it uses loops and I don't like APL with loops :) but I didn't figure >> out a loopless solution. >> >> thanks, >> Fausto >>