Clojure 从两个向量的外积创建矩阵的矢量化方法

Clojure 从两个向量的外积创建矩阵的矢量化方法,clojure,incanter,Clojure,Incanter,刚接触白炽灯,想知道基于两个列表的成对乘积的结果创建矩阵的矢量化解决方案会是什么样子。更清楚地说,我创建了两个列表 (def x (pdf-poisson (range 4) :lambda 2.2)) (def y (pdf-poisson (range 4) :lambda 1.5)). 我现在想要一个4x4矩阵M,这样M(1,1)是x(1)和y(1)的乘积,M(1,2)是x(1)和y(2)的乘积,等等 采用倍频程的外部产品很容易,所以我们希望白炽灯也能支持这一点 我可以通过在向量之间映射

刚接触白炽灯,想知道基于两个列表的成对乘积的结果创建矩阵的矢量化解决方案会是什么样子。更清楚地说,我创建了两个列表

(def x (pdf-poisson (range 4) :lambda 2.2))
(def y (pdf-poisson (range 4) :lambda 1.5)).
我现在想要一个4x4矩阵M,这样M(1,1)是x(1)和y(1)的乘积,M(1,2)是x(1)和y(2)的乘积,等等

采用倍频程的外部产品很容易,所以我们希望白炽灯也能支持这一点

我可以通过在向量之间映射函数来轻松地手工编写代码,但如果可能的话,我需要一种惯用的或向量化的方法

谢谢, JT以以下内容结束:-

(def x-poisson (pdf-poisson (range 4) :lambda 2.2))
(def y-poisson (pdf-poisson (range 4) :lambda 1.5))

(defn- poisson-mapper
  "Takes a list of values from the PDF, and returns a closure that will multiply each
  value in the list by p. Used to create the probability matrix"
  [p_list]
  (fn [p] (map #(* p %) p_list))) 

(def x-mapper (poisson-mapper x-poisson))

(def probabiliy-matix (matrix (map #(x-mapper %) y-poisson)))

刚刚在白炽灯中找到了kronecker函数。向量的克罗内克积就是我需要的。所以

(kronecker y-poisson x-poisson)