使用矢量符号重写表达式

时间:2015-02-11 16:49:08

标签: r matlab

第一次用户,对不起,如果这是错误的论坛。

我正在寻找一种在纯线性代数矢量表示法中表达以下内容的方法,即删除逐元素运算。 我希望这会使渐变和Hessian变得更容易。

在MATLAB中:

sum((W'*p - r).^2 .* m)

其中W是矩阵,p,r和m是向量。

在R:

sum(t(W) %*% p - r)^2 * m)

由于

1 个答案:

答案 0 :(得分:0)

元素方形使得矢量符号在日常线性代数运算符方面更加模糊。 Hadamard product是元素乘法的数学术语,将表示为○。 使用Hadamard产品,我们可以将表达式写为

expression with Hadamard product

在括号中,我们有逐元素乘法,然后我们左右乘以 m 的转置来得到总和(点积的矢量形式)。< / p>


我们还可以使用trace(此处表示为&#34; tr&#34;)和diag操作来获得等效表达式:

expression using trace and diag

在这里,我们使用diag创建一个方形矩阵,对方形矩阵(这是一个有效的运算)进行平方,执行矩阵向量乘法,对结果向量进行诊断,然后进行跟踪。这个看起来像代码,但我认为这仅仅是因为代码看起来像它;)。