Matrix J中投影矩阵的计算
我试图计算J中的投影矩阵。也就是说,给定矩阵Matrix J中投影矩阵的计算,matrix,j,Matrix,J,我试图计算J中的投影矩阵。也就是说,给定矩阵a,我想计算a(a'a)^(-1)a',其中a'是a的转置 我认为正确的方法是注意我对A做了三个运算,并将结果相乘。如果f,g和h都是动词,我在寻找类似(fx)*(gx)*(hx)的东西。(考虑到+/.*是矩阵乘法)有没有一个J结构或习惯用法可以简洁地做到这一点?或者在J中有没有更好的方法 我迄今为止的艰苦工作: mp =: +/ . * ATA =: |: mp ] right_proj =: (%.@ATA) mp |: NB. (A'A)^(-1
a
,我想计算a(a'a)^(-1)a'
,其中a'
是a
的转置
我认为正确的方法是注意我对A做了三个运算,并将结果相乘。如果f
,g
和h
都是动词,我在寻找类似(fx)*(gx)*(hx)
的东西。(考虑到+/.*
是矩阵乘法)有没有一个J结构或习惯用法可以简洁地做到这一点?或者在J中有没有更好的方法
我迄今为止的艰苦工作:
mp =: +/ . *
ATA =: |: mp ]
right_proj =: (%.@ATA) mp |: NB. (A'A)^(-1)A factor in product.
proj_mat =: ] mp right_proj
我认为你的解决方案很好。我立即采取的方法与此非常相似:
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
。如果我们定义一个动词来创建一个标识矩阵,那么我们可以使用%.
来获得大部分方法-只需将X预乘即可
I=: =@i.@# NB. identity matrix
proj_mat=: mp I %. ] NB. projection matrix
结果与第一种方法不完全相同,但我认为它们更类似于LAPACK解决方案 如果有必要,可以使用库“math/lapack”中的QR(
128!:0
)或SVD分解。那么A(A'A)^(-1)A'=QQ'或UU.你有你提到的等价性的来源吗?二元%.
的J词汇表页面提到最小化与投影相关的距离,但我猜不到使用矩阵而不是向量做同样的事情。下一页在“更多信息”部分提出了等价性。