我有一个由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] ......
答案 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