Matlab 无环特殊向量运算

Matlab 无环特殊向量运算,matlab,Matlab,给定一个向量x1,x2,…,xN,我需要为I=1,…,N,j=I+1,…,N创建一个x_I+x_j的向量 例如,对于x1、x2、x3、x4: 如何在没有循环的情况下获得良好的性能 C=combnkv,k返回一个矩阵,该矩阵包含每次取k的向量v元素的所有可能组合 所以如果你打电话 combnk(x,2) 你得到 x3 x4 x2 x4 x2 x3 x1 x4 x1 x3 x1 x2 如果您依赖顺序(现在是倒序的),请使用flipud,

给定一个向量x1,x2,…,xN,我需要为I=1,…,N,j=I+1,…,N创建一个x_I+x_j的向量

例如,对于x1、x2、x3、x4:

如何在没有循环的情况下获得良好的性能

C=combnkv,k返回一个矩阵,该矩阵包含每次取k的向量v元素的所有可能组合

所以如果你打电话

combnk(x,2)
你得到

 x3     x4
 x2     x4
 x2     x3
 x1     x4
 x1     x3
 x1     x2
如果您依赖顺序(现在是倒序的),请使用flipud,然后调用sum

C=combnkv,k返回一个矩阵,该矩阵包含每次取k的向量v元素的所有可能组合

所以如果你打电话

combnk(x,2)
你得到

 x3     x4
 x2     x4
 x2     x3
 x1     x4
 x1     x3
 x1     x2
如果您依赖顺序(现在是倒序的),请使用flipud,然后调用sum


这真的比循环快吗?@CrisLuengo:运行一些快速测试:不。我假设combnk是以有效的方式实现的,但我猜我错了。s=x+x;s=s~Triuturenumelx;似乎更快。对于较大的向量x,我猜循环方法是最好的。这实际上比循环快吗?@CrisLuengo:运行一些快速测试:不。我假设combnk以有效的方式实现,但我猜我错了。s=x+x;s=s~Triuturenumelx;似乎更快。对于较大的向量x,我想循环方法是最好的。