在Matlab中生成组合

时间:2015-03-07 14:01:28

标签: matlab combinations

我有一个由4个元素组成的列向量x,我如何生成x可以采用的所有可能的值组合,使x * x'小于或等于某个值? 请注意,x的值是正数和整数。

更清楚: 输入是列向量x的元素数和阈值,输出是x的值的不同可能组合,关于x * x' &LT =阈 示例:阈值为4,x为4 * 1列向量.....输出为x = [0 0 0 0]。[0 0 0 1],[1 1 1 1] ......

1 个答案:

答案 0 :(得分:2)

看看这是否适合你 -

threshold = 4;
A = 0:threshold
A1 = allcomb(A,A,A,A)
%// Or use: A1 = combvec(A,A,A,A).' from Neural Network Toolbox
combs = A1(sum(A1.^2,2)<=threshold,:)

请注意,上面列出的代码使用allcomb from MATLAB File-exchange

输出 -

combs =
     0     0     0     0
     0     0     0     1
     0     0     0     2
     0     0     1     0
     0     0     1     1
     0     0     2     0
     0     1     0     0
     0     1     0     1
     0     1     1     0
     0     1     1     1
     0     2     0     0
     1     0     0     0
     1     0     0     1
     1     0     1     0
     1     0     1     1
     1     1     0     0
     1     1     0     1
     1     1     1     0
     1     1     1     1
     2     0     0     0