我有一个系列,我不知道如何在我的for循环中将元素加在一起。
for j=1:50
E=a(j,1).*(x.^j)
(what should I do now)
end
提前致谢
答案 0 :(得分:5)
为了完整起见,我将添加矢量化答案:
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 :(得分: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循环的原则现在更加清晰:)
答案 2 :(得分:1)
E = 0;
for j=1:50
E= E +a(j,1).*(x.^j);
end