【发布时间】: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
我有一个系列,但我不知道如何在我的 for 循环中将元素相加。
for j=1:50
E=a(j,1).*(x.^j)
(what should I do now)
end
提前致谢
【问题讨论】:
标签: matlab for-loop sum series
E = 0;
for j=1:50
E= E +a(j,1).*(x.^j);
end
【讨论】:
你必须:
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 循环的原理现在对您来说更清楚:)
【讨论】:
为了完整起见,我将添加矢量化答案:
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 的基础知识,您应该重新审视这一点。
【讨论】:
sum吗?