标签: matlab
是否有一种快速简便的方法来获取某些向量[x,y,z]并生成[xx,xy,xz,yy,yz,zz]?
[x,y,z]
[xx,xy,xz,yy,yz,zz]
nchoosek将省略平方术语。我可以手动添加它们......只是想知道是否有更好的解决方案
nchoosek
答案 0 :(得分:2)
假设向量仅由单个元素组成,我建议的一种方法是使用find和triu的组合。鉴于您的向量存储在变量A中,请尝试:
find
triu
A
[X,Y] = find(triu(ones(numel(A)))); P = A(X).*A(Y);
triu提取矩阵的上三角部分。通过完全抽出矩阵的上三角形部分,我们可以使用find来确定非零条目的行和列位置。每个行和列的位置对应于向量中的一对位置,您可以将它们相乘以获得所需的结果。行和列位置将分别存储在X和Y中,然后您可以使用它们来访问向量A并逐元素地乘以实现所需的结果。
X
Y