【发布时间】:2013-07-19 03:38:21
【问题描述】:
我正在尝试编写代码来获得向量的“N 维积”。因此,例如,如果我有 2 个长度为 L、x 和 y 的向量,那么“二维乘积”就是正则向量乘积,R=x*y',因此 R、R(i, j) 是 x 的第 i 个元素和 y 的第 j 个元素的乘积,即 R(i,j)=x(i)*y(j)。
问题是如何在 matlab 中针对任意维度优雅地概括这一点。这是我有 3 个向量 x,y,z,我想要 3 维数组 R,使得 R(i,j,k)=x(i)*y(j)*z(k)。
对于 4 个向量 x1,x2,x3,x4 也是如此:R(i1,i2,i3,i4)=x1(i1)*x2(i2)*x3(i3)*x4(i4) 等。 ..
另外,我事先不知道维度的数量。代码必须能够处理任意数量的输入向量,输入向量的数量对应于最终答案的维度。
是否有任何简单的 matlab 技巧可以做到这一点并避免专门检查 R 的每个元素?
谢谢!
【问题讨论】:
-
啊,我现在看到您关于不知道维数的编辑。我会更新我的答案。
标签: matlab nested-loops matrix-multiplication discrete-mathematics