0. gamma 函数与阶乘
gamma(n+1) == n! == prod(1:n);
- gammaln():gamma 函数的返回值,gammaln(A) = log(gamma(A)),
- 之所以 matlab 会定义这样一个 gammaln 函数是为了避免 log(gamma()) 可能出现的下溢和上溢;
gamma/gammaln 函数(接受单参数)与 nchoosek (这种接受两个参数)函数的一个主要区别在于,nchoosek 的第一个参数只能为标量,不可以为矢量,gamma/gammaln 则可以;
1. (nk)
nchoosek:
>> nchoosek(5, 4)
5nchoosekln 的矢量化实现:
function nk = nchoosekln(n, k)
nk = gammaln(n+1) - gammaln(k+1) - gammaln(n-k+1);
% 这里的 k 可以为矢量;返回的也为矢量;