matlab做排列组合:比如要ABCD的全排列,可以用perms函数 perms(['ABCD'])运行结果 DCBA DCAB DBCA DBAC DABC DACB CDBA CDAB CBDA CBAD CABD CADB BCDA BCAD BDCA BDAC BADC BACD ACBD ACDB ABCD ABDC ADBC ADCB 以下是几个常用的排列、组合与阶乘等函数。 1、combntns(x,m) 列举出从n个元素中取出m个元素的组合。其中,x是含有n个元素的向量。 2、perms(x) 给出向量x的所有排列。 3、nchoosek(n,m) 从n各元素中取m个元素的所有组合数。 nchoosek(x,m)从向量x中取m个元素的组合 4、factorial(n) 求n的阶乘。 5、prod(n:m) %求排列数:m*(m-1)*(m-2)*…*(n+1)*n prod(1:2:2n-1)或prod(2:2:2n) %求(2n-1)!!或(2n)!! 6、cumprod(n:m) 输出一个向量[n n*(n+1) n(n+1)(n+2) … n(n+1)(n+2)…(m-1)m] 7、gamma(n) 求n! 8、v='n!'; vpa(v) 更详细资料如下: nchoosek Binomial coefficient or all combinations Syntax: C = nchoosek(n,k) 函数描述: 从 n 个元素中 一次选 k 个元素的所有组合数 C(注意,C是一个数值)。 C = n!/((n–k)! k!); C = nchoosek(v,k) 函数描述: 从 向量 v 中 一次选其中 k 个元素 的所有组合 C (注意:C是一个矩阵,列数 为 k ) Description C = nchoosek(n,k) where n and k are nonnegative integers, returns n!/((n–k)! k!). This is the number of combinations of n things taken k at a time. C = nchoosek(v,k), where v is a row vector of length n,creates a matrix whose rows consist of all possible combinations of the n elements of v taken k at a time. Matrix C contains n!/((n–k)! k!) rows and k columns. Inputs n, k, and v support classes of float double and float single. Examples: The command nchoosek(2:2:10,4) returns the even numbers from two to ten, taken four at a time: 2 4 6 8 2 4 6 10 2 4 8 10 2 6 8 10 4 6 8 10 combntns All possible combinations of set of values 从给定集合set中列出所有可能的subset个元素的组合 Syntax combos = combntns(set,subset) combos = combntns(set,subset) returns a matrix whose rows are the various combinations that can be taken of the elements of the vector set of length subset. Many combinatorial applications can make use of a vector 1:n for the input set to return generalized, indexed combination subsets. Description The combntns function provides the combinatorial subsets of a set of numbers. It is similar to the mathematical expression a choose b, except that instead of the number of such combinations,the actual combinations are returned. In combinatorial counting, the ordering of the values is not significant.The numerical value of the mathematical statement a choose b is size(combos,1). Examples How can the numbers 1 to 5 be taken in sets of three (that is, whatis 5 choose 3)? combos = combntns(1:5,3) combos = 1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5 size(combos,1) % "5 choose 3" ans = 10 (注意事项):Note that if a value is repeated in the input vector, each occurrence is treated as independent: combos = combntns([2 2 5],2) combos = 2 2 2 5 2 5