如何在matlab中轻松应用二次增量

时间:2016-05-01 07:21:09

标签: matlab

是否有一种快速简便的方法来获取某些向量[x,y,z]并生成[xx,xy,xz,yy,yz,zz]

nchoosek将省略平方术语。我可以手动添加它们......只是想知道是否有更好的解决方案

1 个答案:

答案 0 :(得分:2)

假设向量仅由单个元素组成,我建议的一种方法是使用findtriu的组合。鉴于您的向量存储在变量A中,请尝试:

[X,Y] = find(triu(ones(numel(A))));
P = A(X).*A(Y);

triu提取矩阵的上三角部分。通过完全抽出矩阵的上三角形部分,我们可以使用find来确定非零条目的行和列位置。每个行和列的位置对应于向量中的一对位置,您可以将它们相乘以获得所需的结果。行和列位置将分别存储在XY中,然后您可以使用它们来访问向量A并逐元素地乘以实现所需的结果。