Returns the Kronecker product of the given arguments.
Examples:
(def x (matrix (range 6) 2))
(def y (matrix (range 4) 2))
(kronecker 4 x)
(kronecker x 4)
(kronecker x y)
(defn kronecker
" Returns the Kronecker product of the given arguments.
Examples:
(def x (matrix (range 6) 2))
(def y (matrix (range 4) 2))
(kronecker 4 x)
(kronecker x 4)
(kronecker x y)
"
([& args]
(reduce (fn [A B]
(let [a (cond
(matrix? A) A
(number? A) (matrix [A])
:else (matrix A))
b (cond
(matrix? B) B
(number? B) (matrix [B])
:else (matrix B))
rows (* (nrow a) (nrow b))
cols (* (ncol a) (ncol b))]
(apply bind-rows (for [i (range (nrow a))]
(apply bind-columns (for [j (range (ncol a))]
(mult (sel a i j) b)))))))
args)))
Comments top
No comments for kronecker. Log in to add a comment.