在 Matlab 中生成组合
generating combinations in Matlab
我有一个由 4 个元素组成的列向量 x,如何生成 x 可以取的值的所有可能组合,使得 x*x' 小于或等于某个值?
请注意,x 的值是正整数。
更清楚一点:
输入是列向量 x 和阈值的元素数,输出是 x 值的不同可能组合,考虑到 x*x' <= threshold
示例:阈值为 4,x 为 4*1 列向量.....输出为 x=[0 0 0 0].[0 0 0 1],[1 1 1 1]......
看看这是否适合你 -
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
我有一个由 4 个元素组成的列向量 x,如何生成 x 可以取的值的所有可能组合,使得 x*x' 小于或等于某个值? 请注意,x 的值是正整数。
更清楚一点: 输入是列向量 x 和阈值的元素数,输出是 x 值的不同可能组合,考虑到 x*x' <= threshold 示例:阈值为 4,x 为 4*1 列向量.....输出为 x=[0 0 0 0].[0 0 0 1],[1 1 1 1]......
看看这是否适合你 -
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