如果我有一个向量r,我可以很容易地计算出它的内积。
r=[1 2 3];
inner = r*r'
inner = 14外部产品也是如此。
outer=r'*r
outer =
1 2 3
2 4 6
3 6 9Outer应该有NxN组件(其中N是组件的总数,这里是3)。内部,另一方面,有m x m个组件(其中m是行数,这里是1)。我也希望能够对矩形矩阵进行这种标准操作。矩形矩阵的内积非常简单:
r =
1 2 3
1 1 1
inner=r*r'
inner =
14 6
6 3内部有分量(2x2=4),这是我从r的转置矩阵乘法中得到的结果。实际上,如果我尝试重复我对向量r所做的操作,我会得到:
outer=r'*r
outer =
2 3 4
3 5 7
4 7 10它不是r与其自身的外积,因为它没有NxN=36,而只有nxn=9组件(其中n是列数)。MATLAB将我的计算解释为r转置和r的内积,我如何获得正确的外积,它的分量是r的分量之间的乘积的组合?
发布于 2019-02-19 20:35:50
MATLAB中的*运算符计算matrix multiplication。
我猜你想要的是Kronecker product。它可以通过MATLAB中的kron函数来实现。
发布于 2021-11-03 16:40:46
如果您正在寻找一个6x6矩阵,您可能想要这样做
r(:) * r(:).'r(:)是一个包含矩阵r的所有元素的向量。
如果您正在寻找r及其自身的张量外积,它的大小为2x3x2x3,则需要执行以下操作:
r .* shiftdim(r,-2)(其中2是r中的维数,.*是隐式单例展开的逐个元素乘法。)
请注意,与kron(r,r) solution by yar一样,这两个答案都会生成相同的值集,但三个答案都会以不同的顺序放置结果元素。
https://stackoverflow.com/questions/54765320
复制相似问题