Matlab中的组合生成

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

我有一个由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(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