计算J中的投影矩阵

时间:2017-10-12 02:04:54

标签: matrix j

我试图计算J中的投影矩阵。即,给定矩阵A,我想计算A(A'A)^(-1)A',其中A'是{的转置{1}}。

我认为正确的做法是注意我要对A进行三次操作并将结果相乘。如果A(f x) * (g x) * (h x)f是动词,我正在寻找g之类的内容。 (将h视为矩阵乘法。)是否有简洁的J构造或成语?或者在J中有更好的方法吗?

到目前为止我的粗略工作:

+/ . *

1 个答案:

答案 0 :(得分:3)

我认为您的解决方案非常好。我的直接方法非常相似:

mp=: +/ .*        NB. matrix multiplication
XtY=: mp~ |:      NB. sum of cross products (monadic is XtX)
proj_mat=: mp %.@XtY mp |:

然而,可以使用二元%.来替代y %. X,这可以产生数值上更好的结果。它依赖于X'X^(-1)X'y等同于%.的事实。如果我们定义一个动词来创建一个单位矩阵,我们可以使用I=: =@i.@# NB. identity matrix proj_mat=: mp I %. ] NB. projection matrix 来获得大部分 - 只需要预先乘以X.

 month.name[1:4]
 [1] "January"   "February"  "March"     "April"

结果与第一种方法并不完全相同,但我认为它们与LAPACK解决方案更相似。