kron .*. Kronecker tensorial product. Weighted array replication

## Syntax

                P = kron(A, B)
                P = A .*. B

## Arguments

A, B

  Arrays of size (a1, a2, ..) and (b1, b2, ..), with any number of dimensions. If `A` or `B` is sparse, the other one can't be an hypermatrix.

  Supported encodings and types: boolean, integer, real, complex, polynomial, rational, sparse boolean, sparse real, sparse complex.

P

  Array of `A` and `B` data type, and of size (a1*b1, a2*b2, ..). If `A` or `B` is sparse, `P` is sparse.

## Description

`kron(A,B)` or `A .*. B` returns the Kronecker tensor product of two matrices or hypermatrices`A` and `B`. The resulting matrix has the following block form: A \; .*.\; B = \begin{pmatrix} A_{1,1}\cdot B & \cdots & A_{1,n}\cdot B \\ \vdots & & \vdots \\ A_{m,1}\cdot B & \cdots & A_{m,n}\cdot B \end{pmatrix}

If `A` is a `m x n` matrix and `B` a `p x q x r` hypermatrix then `A.*.B` is a `(m*p) x (n*q) x (1*r)` hypermatrix.

## Examples

    A = [1 3 ; 2 4]
    B = [1 10 100]
    kron(A, B)
    A .*. B
    B .*. A

    --> A = [1 3 ; 2 4]
     A  =
       1.   3.
       2.   4.

    --> B = [1 10 100]
     B  =
       1.   10.   100.

    --> kron(A, B)
     ans  =
       1.   10.   100.   3.   30.   300.
       2.   20.   200.   4.   40.   400.

    --> A .*. B
     ans  =
       1.   10.   100.   3.   30.   300.
       2.   20.   200.   4.   40.   400.

    --> B .*. A
     ans  =
       1.   3.   10.   30.   100.   300.
       2.   4.   20.   40.   200.   400.

With sparse matrices:

    P = [-1 0 1 10] .*. sparse([0 1 2])
    full(P)

    --> P = [-1 0 1 10] .*. sparse([0 1 2])
     P  =
    (  1,  12) sparse matrix
    (  1,  2)    -1.
    (  1,  3)    -2.
    (  1,  8)     1.
    (  1,  9)     2.
    (  1,  11)    10.
    (  1,  12)    20.

    --> full(P)
     ans  =
       0.  -1.  -2.   0.   0.   0.   0.   1.   2.   0.   10.   20.

With complex numbers:

    A = [-1 1 ; -%i %i]
    A .*. A

    --> A = [-1 1 ; -%i %i]
     A  =
      -1.     1.
      -i      i

    --> A .*. A
     ans  =
       1.    -1.    -1.     1.
       i     -i     -i      i
       i     -i     -i      i
      -1.     1.     1.    -1.

With hypermatrices:

    b = matrix(1:24, [4 3 2]);

    // row .*. hypermat
    a = 1:2, b
    a.*.b

    // hypermat .*. row
    b,a
    b .*. a

    // column .*. hypermat
    a = [1;2], b
    a.*.b

    // matrix .*. hypermat
    a = [-1 -2; 2 1], b
    a.*.b

    // hypermat .*. hypermat
    a = matrix([-1,-2, 1 2], [1 2 2]), b
    a.*.b

## See Also

- kron .\. ./.
- star
- prod
- cumprod
- repmat

## History

5.5.1 Extension to hypermatrices.
6.1.1 Extension to boolean and sparse boolean arrays.