【问题标题】:how to sum a serie in MATLAB如何在MATLAB中对一个系列求和
【发布时间】:2014-10-12 14:15:33
【问题描述】:

我有一个系列,但我不知道如何在我的 for 循环中将元素相加。

for j=1:50
    E=a(j,1).*(x.^j)
    (what should I do now)
end

提前致谢

【问题讨论】:

    标签: matlab for-loop sum series


    【解决方案1】:
    E = 0;
    for j=1:50
        E= E +a(j,1).*(x.^j);
    end
    

    【讨论】:

      【解决方案2】:

      你必须:

      1) 分别存储每个元素,然后将它们相加,这样您就不会在循环继续时覆盖它们的值。

      这是一个非常简单的例子:

      clear
      clc
      
      
      a = rand(50,1); % generate dummy values for the coefficients;
      n = 50;
      
      x = 3; % dummy x value
      
      MySum = zeros(1,n);
      
      for Counter = 1:n
      
          CurrentValue = a(Counter,1)*(x^Counter); % Calculate the current value 
          MySum(Counter) = CurrentValue; % Store in an array
      end
      
      TotalSum = sum(MySum) ;% Once the loop is complete, sum all the values together.
      

      这不是最有效的方法。但是,它允许您访问为每次迭代计算的每个单独的总和,这可能会很有用。

      2) 或者,您可以简单地将每个“当前值”添加到先前计算的总和中,然后最终总和将是循环中计算的最后一个总和。:

      MySum = zeros(1,n);
      
      CurrentSum = 0; % Initialize CurrentSum.
      for Counter = 1:n
      
          CurrentValue = a(Counter,1)*(x^Counter)
          CurrentSum = CurrentSum + CurrentValue
      end
      
      TotalSum = CurrentSum
      

      所以基本上你的问题归结为:

      E = E + a(j,1).*(x.^j)
      

      对于一个简单的问题,这是一个很长的答案,抱歉!希望索引和 for 循环的原理现在对您来说更清楚:)

      【讨论】:

      • 非常感谢亲爱的 Benoit。非常有帮助,非常有条理。
      • 很高兴能提供帮助!正如@Dan 所指出的,向量化通常是使用 Matlab 的方式。玩得开心!
      【解决方案3】:

      为了完整起见,我将添加矢量化答案:

      j = 1:50
      E=sum(A.*(x.^j)) %//Assuming you have an n-by-1 vector of coefficients call A and x is a constant
      

      这样您根本不需要循环,通常是首选的 Matlab 方法。一旦您了解了 Matlab 的基础知识,您应该重新审视这一点。

      【讨论】:

      • 非常感谢亲爱的丹
      • +1 表示矢量化,但不应该有sum吗?
      • @LuisMendo 是的,应该有
      猜你喜欢
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多