在 R 中,c(3,1,0) * c(2,0,1) == c(6,0,0)。这不是点积,也不是叉积。首先,该产品的名称是什么,其次,它是否适用于 WinBUGS、OpenBUGS 和/或 JAGS?
BUGS 和 JAGS 中的向量乘法
机器算法验证
错误
锯齿
2022-03-19 20:32:29
4个回答
Martyn Plummer 指出这是在 JAGS 中实现的,我在阅读手册时错过了这一点。从第 5 章开始:
采用标量参数的标量函数会自动矢量化。当参数是具有一致维度或标量的数组时,也可以调用它们。因此,例如,标量可以添加到矩阵使用
B <- A + c而不是更冗长的形式
D <- dim(A) for (i in 1:D[1]) for (j in 1:D[2]) { B[i,j] <- A[i,j] + c } }
与 JAGS 不同,WinBUGS 和 OpenBUGS 不做这种形式的矢量化;如上所述,您必须编写一个循环并“手动”计算每个元素。
要进行元素乘法,您可以在这些语言中创建一个 for 循环,就是这样!我在 WinBUGS 中使用 for 循环没有问题。
顺便说一下,两个等长向量的逐元素乘法称为 Hadamard 积(又名 Schur 积)。
其它你可能感兴趣的问题