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)等。
在Octave中使用外部产品很容易,所以希望Incanter也支持这一点。
我可以通过在矢量之间映射函数来轻松地对此进行编码,但是如果可能的话,需要惯用法或矢量化方法。
谢谢, JT
答案 0 :(得分:2)
刚刚在Incanter找到kronecker功能。矢量的Kronecker产品是我所需要的。所以
(kronecker y-poisson x-poisson)
答案 1 :(得分:1)
结束于此: -
(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)))