分享

matlab中的排列组合函数

 zele 2011-01-28
nchoosek (注意:参数里面必须是非负整数。通常需要使用round()函数与fix()对参数进行取整,不然会出现错误:the second input has to be a non-negative interger!)

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多