bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-apl] Fwd: tensor product


From: Jay Foad
Subject: [Bug-apl] Fwd: tensor product
Date: Wed, 20 May 2015 15:08:18 +0100

(Forgot to cc the list.)

---------- Forwarded message ----------
From: Jay Foad <address@hidden>
Date: 20 May 2015 at 14:55
Subject: Re: [Bug-apl] tensor product
To: Fausto Saporito <address@hidden>


"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 <address@hidden> 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
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]