gpt4 book ai didi

matlab - 获取二项式系数

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:22 25 4
gpt4 key购买 nike

在尝试向量化一段特定的 Matlab 代码时,我找不到一个直接的函数来生成二项式系数列表。我能找到的最好的是 nchoosek,但由于某些无法解释的原因,该函数只接受整数(而不是整数向量)。我当前的解决方案如下所示:

mybinom = @(n) arrayfun(@nchoosek, n*ones(1,n), 1:n)

这将为给定的 n 值生成一组二项式系数。然而,由于二项式系数总是对称的,我知道我做的工作是必要的两倍。我确定我可以创建一个利用对称性的解决方案,但我确定这会以牺牲可读性为代价。

是否有比这更优雅的解决方案,也许使用我不知道的 Matlab 函数?请注意,我对使用符号工具箱不感兴趣。

最佳答案

如果你想尽量减少操作,你可以按照以下方式进行:

n = 6;

k = 1:n;
result = [1 cumprod((n-k+1)./k)]

>> result

result =

1 6 15 20 15 6 1

这对每个系数只需要很少的操作,因为每个系数都是利用先前计算的系数获得的。

如果考虑到对称性,您可以将操作数减少大约一半:

m1 = floor(n/2);
m2 = ceil(n/2);
k = 1:m2;
result = [1 cumprod((n-k+1)./k)];
result(n+1:-1:m1+2) = result(1:m2);

关于matlab - 获取二项式系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com