Matlab中的双和

Matlab中的双和,matlab,sum,binomial-coefficients,Matlab,Sum,Binomial Coefficients,我想编写一个Matlab代码来计算以下内容: \sum{k=0}{N-1}\frac{1}{k!}\sum{i=0}{k}{k\choose i}(a-1){k-i}a^k 我的代码是: N = 3; a = [3 4]; for k = 0:N-1 f = 0; for i = 0:k f = f + nchoosek(k,i).* a.^k .* (a-1).^(k-i); end sumoff = sum(f); all

我想编写一个Matlab代码来计算以下内容:

\sum{k=0}{N-1}\frac{1}{k!}\sum{i=0}{k}{k\choose i}(a-1){k-i}a^k

我的代码是:

N = 3;
a = [3 4];
for k = 0:N-1
    f = 0;
     for i = 0:k
         f = f + nchoosek(k,i).* a.^k .* (a-1).^(k-i);  
     end
     sumoff = sum(f);
     all = (( 1./ (factorial(k))).*sumoff);
end
overall= sum(all);
“all”变量在for循环内部而不是外部时给出不同的值。但我想让它在k=0:N-1时计算。我做错了什么


谢谢。

问题是您当前的代码在每次迭代中都会覆盖所有代码。将其移出循环也不起作用,因为您将只保存上一次迭代的结果

要保存每次迭代的
all
,请将
all
定义为一个向量,然后将每个中间结果分配到该向量中:

N=3;
a=[34];
%为'all'预先分配一个向量`
all=nan(N-1,1);
对于k=0:N-1
f=0;
对于i=0:k
f=f+nchoosek(k,i)。*a.^k.*a-1.^(k-i);
结束
sumoff=总和(f);
%将中间结果分配到'all'向量中
所有(k+1)=(1./(阶乘(k)).*sumoff);
结束
总体=总和(全部);

我明白你的意思。非常感谢。