本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

nchoosek

二项式系数或所有组合

说明

示例

b = nchoosek(n,k) 返回二项式系数,定义为

Cnk=(nk)=n!(nk)!k!.

这是从 n 项中一次取 k 项的组合的数目。nk 必须为非负整数。

示例

C = nchoosek(v,k) 返回一个矩阵,其中包含了从向量 v 的元素中一次取 k 个元素的所有组合。矩阵 Ck 列和 m!/((m–k)! k!) 行,其中 m 为 length(v)

示例

全部折叠

b = nchoosek(5,4)
b = 5
v = 2:2:10;
C = nchoosek(v,4)
C = 5×4

     2     4     6     8
     2     4     6    10
     2     4     8    10
     2     6     8    10
     4     6     8    10

v = uint16([10 20 30]);
C = nchoosek(v,uint16(2))
C = 3x2 uint16 matrix

   10   20
   10   30
   20   30

输入参数

全部折叠

可选项的数目,指定为非负整数标量。n 可以是任何数值类型,但必须为实数。

示例: 10

示例: int16(10)

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

选中项的数目,指定为非负整数标量。k 可以是任何数值类型,但必须为实数。nchoosek(n,k) 要求 nk 为同一类型,或者其中至少一个是 double 类型。

nchoosek(v,k) 对于不同类型的合并输入没有限制。

示例: 3

示例: int16(3)

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

所有可选项的集合,指定为向量。

示例: [1 2 3 4 5]

示例: [1+1i 2+1i 3+1i 4+1i]

示例: int16([1 2 3 4 5])

示例: [true false true false]

示例: ['abcd']

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
复数支持:

输出参数

全部折叠

二项式系数,以非负标量值的形式返回。bnk 的类型相同。如果 nk 的类型不同,则 b 以非双精度类型形式返回。

v 中的所有组合,以类型与 v 相同的矩阵形式返回。矩阵 Ck 列和 n!/((n–k)! k!) 行,其中 n 为 length(v)

C 的每一行包含从 v 中选取 k 项的一种组合。C 中每一行的元素顺序与其在 v 中的顺序相同。

如果 k > numel(v),则 C 是一个空矩阵。

局限性

  • b = nchoosek(n,k) 足够大时,nchoosek 会显示一个警告,指示结果可能不够准确。这种情况下,对双精度输入,结果只精确到 15 位,对单精度输入,精确到 8 位。

  • C = nchoosek(v,k)只适用于 length(v) 小于 15 的情况。

扩展功能

另请参阅

在 R2006a 之前推出