1. 组合的矢量实现

nchoosek(n, k) 的第二个参数在 matlab 下是不支持矢量化的,必须是标量形式。但 matlab 下的 gamma 函数,却可支持,矢量形式,又因为,gamma 函数与 阶乘的关系:

gamma(n+1) == n!

因此:

>> nchoosekln = @(n, k) gammaln(n+1) - gammaln(k+1) - gammaln(n-k+1);
>> nchooseks = @(n, k) exp(nchoosekln(n, k));
>> nchooseks(5, 1:4)
ans =
    5.0000   10.0000   10.0000    5.0000
posted on 2016-12-20 10:23  未雨愁眸  阅读(588)  评论(0)    收藏  举报