Matlab 无环特殊向量运算
给定一个向量x1,x2,…,xN,我需要为I=1,…,N,j=I+1,…,N创建一个x_I+x_j的向量 例如,对于x1、x2、x3、x4: 如何在没有循环的情况下获得良好的性能 C=combnkv,k返回一个矩阵,该矩阵包含每次取k的向量v元素的所有可能组合 所以如果你打电话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,
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,我想循环方法是最好的。