【发布时间】:2015-03-07 14:01:28
【问题描述】:
我有一个由 4 个元素组成的列向量 x,我如何生成 x 可以取的值的所有可能组合,使得 x*x' 小于或等于某个值? 注意 x 的值是正整数。
为了更清楚: 输入是列向量 x 和阈值的元素数,输出是 x 值的不同可能组合,其中 x*x'
【问题讨论】:
标签: matlab combinations
我有一个由 4 个元素组成的列向量 x,我如何生成 x 可以取的值的所有可能组合,使得 x*x' 小于或等于某个值? 注意 x 的值是正整数。
为了更清楚: 输入是列向量 x 和阈值的元素数,输出是 x 值的不同可能组合,其中 x*x'
【问题讨论】:
标签: matlab combinations
看看这是否适合你 -
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
【讨论】:
threshold = 4;A = repmat({0:threshold},1,threshold)?您使用的是哪个版本的 MATLAB?我之前基于单元格的方法是一个通用代码,但我怀疑您使用的是某些旧版本的 MATLAB,这会导致您之前看到的错误。
threshold = 4;A = repmat({0:threshold},1,threshold) 有任何错误吗?