Matlab中的组合生成
我有一个由4个元素组成的列向量x,如何生成x可以取的所有可能的值的组合,使得x*x'小于或等于某个值? 请注意,x的值是正整数 更清楚地说:Matlab中的组合生成,matlab,combinations,Matlab,Combinations,我有一个由4个元素组成的列向量x,如何生成x可以取的所有可能的值的组合,使得x*x'小于或等于某个值? 请注意,x的值是正整数 更清楚地说: 输入是列向量x和阈值的元素数,输出是x值的不同可能组合,这与x*x'有关,看看这是否适用于您- 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
输入是列向量x和阈值的元素数,输出是x值的不同可能组合,这与x*x'有关,看看这是否适用于您-
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,:)
使用==>double从单元格转换为double时出错。如何概括此代码?我的意思是,如果阈值是一个随机值,x的大小可能会改变?@AmiraAkra看看这是否会引发任何错误-
threshold=4;A=repmat({0:threshold},1,threshold)
?您使用的是什么版本的MATLAB?我以前的基于单元格的方法是一个通用代码,但我怀疑您使用的是一些旧版本的MATLAB,它导致了您之前看到的错误。我使用的是7.10.0(R2010a)…没有错误是由-A1=combvec(a,a,a,a)生成的。”——@AmiraAkra任何threshold=4的错误;A=repmat({0:threshold},1,threshold)
?
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